#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define sz size() #define pb push_back #define mp make_pair #define fi first #define se second #define all(c) (c).begin(), (c).end() #define rep(i,a,b) for(ll i=(a);i<(b);++i) #define per(i,a,b) for(ll i=b-1LL;i>=(a);--i) #define clr(a, b) memset((a), (b) ,sizeof(a)) #define ctos(c) string(1,c) #define print(x) cout<<#x<<" = "<>n>>r>>g>>b; clr(dp,0); dp[0][0][0][0][0] = 1; dp[0][1][0][0][1] = 1; dp[0][0][1][0][2] = 1; dp[0][0][0][1][3] = 1; rep(i,1,31){ rep(r1,0,31){ rep(g1,0,31){ rep(b1,0,31){ dp[i][r1][g1][b1][0] += dp[i-1][r1][g1][b1][0]; dp[i][r1][g1][b1][0] %= MOD; dp[i][r1+1][g1][b1][1] += dp[i-1][r1][g1][b1][0]; dp[i][r1+1][g1][b1][1] %= MOD; dp[i][r1][g1+1][b1][2] += dp[i-1][r1][g1][b1][0]; dp[i][r1][g1+1][b1][2] %= MOD; dp[i][r1][g1][b1+1][3] += dp[i-1][r1][g1][b1][0]; dp[i][r1][g1][b1+1][3] %= MOD; dp[i][r1][g1][b1][0] += dp[i-1][r1][g1][b1][1]; dp[i][r1][g1][b1][0] %= MOD; dp[i][r1][g1][b1][0] += dp[i-1][r1][g1][b1][2]; dp[i][r1][g1][b1][0] %= MOD; dp[i][r1][g1][b1][0] += dp[i-1][r1][g1][b1][3]; dp[i][r1][g1][b1][0] %= MOD; dp[i][r1][g1][b1][0] += dp[i-1][r1][g1][b1][4]; dp[i][r1][g1][b1][0] %= MOD; dp[i][r1+1][g1][b1][4] += dp[i-1][r1][g1][b1][2]; dp[i][r1+1][g1][b1][4] %= MOD; dp[i][r1+1][g1][b1][4] += dp[i-1][r1][g1][b1][3]; dp[i][r1+1][g1][b1][4] %= MOD; dp[i][r1][g1+1][b1][4] += dp[i-1][r1][g1][b1][1]; dp[i][r1][g1+1][b1][4] %= MOD; dp[i][r1][g1+1][b1][4] += dp[i-1][r1][g1][b1][3]; dp[i][r1][g1+1][b1][4] %= MOD; dp[i][r1][g1][b1+1][4] += dp[i-1][r1][g1][b1][1]; dp[i][r1][g1][b1+1][4] %= MOD; dp[i][r1][g1][b1+1][4] += dp[i-1][r1][g1][b1][2]; dp[i][r1][g1][b1+1][4] %= MOD; } } } } ll ans = 0; rep(i,0,5){ ans += dp[n-1][r][g][b][i]; ans %= MOD; } cout << ans << endl; return 0; }