/* -*- coding: utf-8 -*- * * 1500.cc: No.1500 Super Knight - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ int MOD = 1000000007; int dxs[] = { 3, 3, 2, 0, -2, -3, -3, -3, -2, 0, 2, 3 }; int dys[] = { 0, 2, 3, 3, 3, 2, 0, -2, -3, -3, -3, -2 }; /* typedef */ typedef long long ll; typedef vector vs; /* global variables */ /* subroutines */ void test(int n) { int o = n * 3, m = o * 2 + 1; vs fs(m, string(m, '.')); fs[o][o] = 'X'; for (int i = 0; i < n; i++) { vs gs(m, string(m, '.')); for (int y = 0; y < m; y++) for (int x = 0; x < m; x++) if (fs[y][x] != '.') for (int di = 0; di < 12; di++) { int vx = x + dxs[di], vy = y + dys[di]; if (vx >= 0 && vx < m && vy >= 0 && vy < m) gs[vy][vx] = 'X'; } swap(fs, gs); } for (int y = 0; y < m; y++) puts(fs[y].c_str()); } /* main */ int main() { int n; scanf("%d", &n); //test(n); if (n == 0) puts("1"); else if (n == 1) puts("12"); else if (n == 2) puts("65"); else { int c = (17LL * n % MOD * n % MOD + 6LL * n % MOD + 1) % MOD; printf("%d\n", c); } return 0; }