// RandomUsername (Nikola Jovanovic) // MindCoding 2016 Round 3 // A #include #define DBG false #define debug(x) if(DBG) printf("(ln %d) %s = %d\n", __LINE__, #x, x); #define lld long long #define ff(i,a,b) for(int i=a; i<=b; i++) #define fb(i,a,b) for(int i=a; i>=b; i--) #define par pair #define fi first #define se second #define mid (l+r)/2 #define INF 1000000000 #define MAXN 15 using namespace std; int T; struct info { int tmp[MAXN]; int cnt[MAXN]; info() { ff(i, 0, 13) tmp[i] = cnt[i] = 0; } }; info a[MAXN][MAXN]; int ret[MAXN]; bool valid(int i, int j) { if(i>=0 && j>=0 && i<=13 && j<=13) return true; return false; } void update(int di, int dj, int si, int sj) { a[di][dj].tmp[T] += a[di][dj].cnt[T] + a[si][sj].cnt[T-1]; } void doStep() { ff(i, 0, 13) { ff(j, 0, 13) { if(valid(i-1, j)) update(i, j, i-1, j); if(valid(i+1, j)) update(i, j, i+1, j); if(valid(i, j-1)) update(i, j, i, j-1); if(valid(i, j+1)) update(i, j, i, j+1); } } } void reset() { ff(i, 0, 13) { ff(j, 0, 13) { ff(idx, 0, 13) a[i][j].tmp[idx] = 0; } } } void copyTmp() { ff(i, 0, 13) { ff(j, 0, 13) { a[i][j].cnt[T] = a[i][j].tmp[T]; } } } int main() { // first step a[0][0].cnt[0] = 1; // do 13 steps ff(i, 1, 13) { T = i; reset(); doStep(); copyTmp(); } ff(i, 0, 13) { ff(j, 0, 13) { ff(idx, 0, 13) { ret[idx] += a[i][j].cnt[idx]; } } } // print ret //ff(i, 0, 13) // printf("%d:%d\n", i, ret[i]); int n; scanf("%d", &n); printf("%d\n", ret[n-1]); return 0; }