#include <bits/stdc++.h>

using namespace std;
using ll =long long;
typedef pair<int,int> P;
#define SORT(a) sort((a).begin(),(a).end())
#define rSORT(a) reverse((a).begin(),(a).end())
#define For(i, a, b)    for(int i = (a) ; i < (b) ; ++i)
#define rep(i, n)       For(i, 0, n)
#define debug(x)  cerr << #x << " = " << (x) << endl;
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
//Write From this Line

int [101][4][4][4];

const ll mod = 1e9+7;
int main()
{
	int n;
	cin >> n; 

	dp[0][3][3][3] = 1;
	rep(len,n){
		rep(i,4){//最後から1文字目
			rep(j,4){ // 最後から二文字目の文字
				rep(k,4){ // 最後から3文字目の文字
					// 条件に当てはまるものがない場合はcontinue;
					if(dp[len][i][j][k] == 0) continue;

					// 新しく追加する文字がない場合はcontinue;
					// aたらしく追加するも文字
					rep(a,4){
						if(a == 2 && i == 1 && j == 0) continue;
						if(a == 2 && i == 0 && j == 1) continue;
						if(a == 1 && i == 2 && j == 0) continue;
						if(a == 2 && i == 1 && k == 0) continue;
						if(a == 2 && j == 1 && k == 0) continue;

						dp[len+1][a][i][j] += dp[len][i][j][k];
						dp[len+1][a][i][j] %= mod;
					}
				}
			}
		}
	}
}
