#include<bits/stdc++.h> using namespace std; #define F first #define S second #define PB push_back #define MP make_pair #define REP(i,a,b) for (int i = a; i <b; i++) typedef long long ll; #define int ll typedef vector<int> vi; typedef vector<long long> vl; typedef pair<int,int> pi; #define trace(x) cout<<#x<<"="<<x<<"\n"; #define llp 1000000007 #define mod 1000000007 int dp[110][4][4]; int get(int i, int j){ if(i==0 && j==1){ return 0; } if(i==0 && j==2){ return 1; } if(i==1 && j==0){ return 2; } } bool check(int i, int j){ if(i==0 && j==1){ return true; } if(i==0 && j==2){ return true; } if(i==1 && j==0){ return true; } return false; } int32_t main(){ ios::sync_with_stdio(false); int n; cin>>n; memset(dp,0,sizeof(dp)); if(n==1){ cout<<4<<"\n"; } for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ dp[2][i][j]=1; } } for(int k=3;k<=100;k++){ for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ if(!check(i,j)){ for(int J=0;J<4;J++){ dp[k][j][J]=(dp[k][j][J]+dp[k-1][i][j])%mod; } } else{ int Case=get(i,j); if(Case==0){ for(int J=0;J<4;J++){ if(J!=2) dp[k][j][J]=(dp[k][j][J]+dp[k-1][i][j])%mod; } } if(Case==1){ for(int J=0;J<4;J++){ if(J!=1) dp[k][j][J]=(dp[k][j][J]+dp[k-1][i][j])%mod; } } if(Case==2){ for(int J=0;J<4;J++){ if(J!=2) dp[k][j][J]=(dp[k][j][J]+dp[k-1][i][j])%mod; } } } } } } int sum=0; for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ sum=(sum+dp[n][i][j])%mod; } } cout<<sum<<"\n"; return 0; }