// #include <bits/stdc++.h>
// #define rep(i,a,b) for(ll i=a;i<b;i++)
// #define rrep(i,b,a) for(int i=b;i>=a;i--)
// #define fori(a) for(auto i : a )
// #define all(a) begin(a), end(a)
// #define set(a,b) memset(a,b,sizeof(a))
// #define sz(a) a.size()
// #define pi 3.14159
// #define ll long long
// #define ull unsigned long long
// #define pb push_back
// #define PF push_front //deque
// #define mp make_pair
// #define pq priority_queue
// const ll mod=1000000007;
// #define f first
// #define s second
// #define pii pair< int, int >
// #define vi vector<int>
// #define vpii vector<pii>
// #define debug(v) for(auto i:v) cout<<i<<" ";
// #define tc int t; cin >> t; while(t--)
//
// using namespace std;
// string repeat(string s, int n) {
//     string s1 = "";
//     for (int i=0; i<n;i++)
//         s1+=s;
//     return s1;
// }
// string getString(char x) {
//     string s(1, x);
//     return s;
// }
//
// void optimizeIO(){
//     ios_base::sync_with_stdio(false);
//     cin.tie(NULL);
//     cout.tie(NULL);
// }
// int gcd(int a, int b){
//     if (a == 0)  return b;
//     return gcd(b % a, a);
// }
// void  solve(){
//   int n;
//   cin>>n;
//   ll dp[n+1][4];
//   rep(i,0,4) dp[0][i]=0;
//   rep(i,0,4) dp[1][i]=1;
//   rep(i,0,4) dp[2][i]=4;
//
//   rep(i,3,n+1){
//     ll sum = (dp[i-1][0]+ dp[i-1][1]+dp[i-1][2]+dp[i-1][3])%mod;
//     ll sum1 = (dp[i-3][0]*4)%mod;
//     dp[i][0] = sum;
//     dp[i][3]=sum;
//     dp[i][1]=((sum-sum1-dp[i-2][2]-sum1)%mod+mod)%mod;     // GAC, A?GC, AG?C
//     dp[i][2]=(sum-dp[i-2][0])%mod;   // ACG
//   }
//   cout<< (dp[n][0]+dp[n][1]+dp[n][2]+dp[n][3]+mod)%mod<<endl;
// }
// int main(){
//     optimizeIO();
//     // tc
//     { solve();
//     }
// }


#include <bits/stdc++.h>
using namespace std;
/*{{{*/  //template
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define rrep(i,n) for(int i=(n)-1;i>=0;i--)
constexpr int INF = numeric_limits<int>::max()/2;
constexpr long long LINF = numeric_limits<long long>::max()/3;
#define pb push_back
#define eb emplace_back
#define fi first
#define se second
#define all(v) (v).begin(),(v).end()
#define sz(x) (int)(x).size()
#define debug(x) cerr<<#x<<":"<<x<<endl
#define debug2(x,y) cerr<<#x<<","<<#y":"<<x<<","<<y<<endl
//struct fin{ fin(){ cin.tie(0); ios::sync_with_stdio(false); } } fin_;
struct Double{ double d; explicit Double(double x) : d(x){} };
ostream& operator<<(ostream& os,const Double x){ os << fixed << setprecision(20) << x.d; return os; }
template<typename T> ostream& operator<<(ostream& os,const vector<T>& vec){ os << "["; for(const auto& v : vec){ os << v << ","; } os << "]"; return os; }
template<typename T,typename U> ostream& operator<<(ostream& os, const map<T,U>& mp){ os << "{"; for(auto& p : mp){ os << p << ","; } os << "}"; return os; }
template<typename T,typename U> ostream& operator<<(ostream& os,const pair<T,U>& p){ os << "(" << p.first << ","<< p.second <<")"; return os; }
template<typename T> ostream& operator<<(ostream& os,const set<T>& st){ os<<"{"; for(T v:st) os<<v<<","; os <<"}"; return os; }
template<typename T,typename U> inline void chmax(T &x,U y){ if(y>x) x = y; }
template<typename T,typename U> inline void chmin(T &x,U y){ if(y<x) x = y; }
using ll = long long;
using ull = unsigned long long;
using pii = std::pair<int,int>;
using vi = std::vector<int>;
typedef vector<vi> vvi;
ll gcd(ll a,ll b){ if(b==0) return a; else return gcd(b,a%b); }
constexpr ll TEN(int n) { return (n == 0) ? 1 : 10 * TEN(n - 1); }
//constexpr double eps = 1e-14;
constexpr double eps = 1e-10;
constexpr ll mod = 1e9+7;
const int dx[]={1,0,-1,0} ,dy[] = {0,1,0,-1};
/*}}}*/

ll dp[101][6][6][6];

int main(){
    int N; cin >> N;
    dp[0][0][0][0] = 1;
    for(int i=0;i<N;i++){
        for(int a=0;a<=4;a++){
            for(int b=0;b<=4;b++){
                for(int c=0;c<=4;c++){
                    for(int d=1;d<=4;d++){
                        if(b==1 && c==3 && d==2) continue; // AGC
                        if(a==1 && c==3 && d==2) continue; // A*GC
                        if(b==3 && c==1 && d==2) continue; // GAC
                        if(b==1 && c==2 && d==3) continue; // ACG
                        if(a==1 && b==3 && d==2) continue; // AG*C

                        dp[i+1][b][c][d] += dp[i][a][b][c];
                        dp[i+1][b][c][d] %= mod;
                    }
                }
            }
        }
    }

    ll sum = 0;
    for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                sum += dp[N][i][j][k];
                sum %= mod;
            }
        }
    }
    cout << sum << endl;
}


Measured memory_bytes: 3728