#include <bits/stdc++.h> using namespace std; #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define endl "\n" #define int long long const int MOD = 1e9+7; int n; int cache[505][5][5][5]; int dp(int idx, int a, int b, int c) //Last, Second Last, Third Last { if(idx==0) return 1; int &ans=cache[idx][a][b][c]; if(ans != -1) return ans; ans = 0; for(int cur=0;cur<=3;cur++) { if(cur==b) continue; set<int> s; s.insert(a); s.insert(b); s.insert(c); s.insert(cur); if(s.size() == 4 && s.find(4)==s.end()) { if(abs(a-c)==1 && abs(cur-b)==1) continue; } ans += dp(idx-1, b, c, cur); ans %= MOD; } return ans; } int32_t main() { IOS; memset(cache, -1, sizeof(cache)); for(int i=1;i<=10;i++) cerr<<dp(i, 4, 4, 4)<<endl; return 0; }