#include using namespace std; using ll = long long; const ll MOD = 1e9 + 7; ll dp[1150][1150]; int main() { cin.tie(0); ios::sync_with_stdio(false); int n; cin >> n; dp[0][0] = 1; for (int i = 1; i <= n; i++) { for (int j = i - 1; j >= 0; j--) { for (int k = 2 * (i - j - 1); k >= 0; k--) { ll tmp = dp[j][k]; dp[j][k] = 0; //夫婦が同じグループにいる (dp[j + 1][k] += tmp) %= MOD; if (k > 0) (dp[j + 1][k - 1] += tmp * k % MOD) %= MOD; if (j > 0) (dp[j][k] += tmp * j % MOD) %= MOD; //夫婦が別々のグループにいる if (j > 1) (dp[j][k] += tmp * j * (j - 1) % MOD) %= MOD; (dp[j][k + 2] += tmp) %= MOD; if (k > 0) (dp[j][k + 1] += tmp * k * 2 % MOD) %= MOD; if (k > 1) (dp[j][k] += tmp * k * (k - 1) % MOD) %= MOD; if (j > 0) { (dp[j][k + 1] += tmp * j * 2 % MOD) %= MOD; if (k > 0) (dp[j][k] += tmp * j * k * 2 % MOD) %= MOD; } } } } ll ans = 0; for (int i = 1; i <= n; i++) { (ans += dp[i][0]) %= MOD; } cout << ans << endl; return 0; }