#include #include #include using namespace std; using ll = long long; const int MOD = (int)1e9 + 7; int main() { int n; cin >> n; vector> dp(n * 2 + 1, vector(n * 2 + 1)); dp[0][0] = 1; for (int t = 0; t < n; t++) { vector> dp2(n * 2 + 1, vector(n * 2 + 1)); for (int i = 0; i <= t * 2; i++) { for (int j = 0; i + j <= t * 2; j++) { (dp2[i][j + 2] += dp[i][j]) %= MOD; (dp2[i][j + 1] += dp[i][j] * (i + j) * 2) %= MOD; (dp2[i][j] += dp[i][j] * ((i + j) * (i + j) - j)) %= MOD; (dp2[i + 1][j] += dp[i][j]) %= MOD; if (j) (dp2[i + 1][j - 1] += dp[i][j] * j) %= MOD; } } swap(dp, dp2); } long long ans = 0; for (int i = 0; i <= n * 2; i++) (ans += dp[i][0]) %= MOD; cout << ans << endl; }