#include const int bit[17] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536}; int main() { int K; scanf("%d", &K); int i, j, k, l, m, bnd[65536] = {}, adj[16] = {2, 3, 3, 2, 3, 4, 4, 3, 3, 4, 4, 3, 2, 3, 3, 2}; long long dp[65536][217] = {}; for (k = 0; k < bit[16]; k++) { for (i = 0; i < 16; i++) { if ((k & bit[i]) == 0) continue; if (i / 4 > 0 && (k & bit[i-4]) == 0) bnd[k]++; if (i / 4 < 3 && (k & bit[i+4]) == 0) bnd[k]++; if (i % 4 > 0 && (k & bit[i-1]) == 0) bnd[k]++; if (i % 4 < 3 && (k & bit[i+1]) == 0) bnd[k]++; } } for (k = 0, l = 1, dp[0][0] = 1; k < bit[16]; k++, l++) { if (k > 0) for (j = 0; j < 16 && (k & bit[j]) == 0; j++) l--; for (i = 0; i < 16; i++) { if ((k & bit[i]) != 0) continue; for (j = 0; j <= 216; j++) { if (dp[k][j] == 0) continue; m = j + bnd[k^bit[i]]; if (m > 216) return -1; dp[k^bit[i]][m] += dp[k][j]; } } } /* long long ans = 0; for (i = 0; i <= K; i++) { printf("%lld ", dp[bit[16]-1][i]); ans += dp[bit[16]-1][i]; } */ printf("%lld\n", dp[bit[16]-1][K]); fflush(stdout); return 0; }