#include using namespace std; long long dp[2][1000007]; int main() { long long N; cin >> N; const long long MOD = 1000000007; for (long long i = 0; i <= N; i++) { if (i == 0) { dp[0][0] = 1; continue; } for (long long j = 0; j <= i; j++) { // i > 0 if (j == 0) { dp[i%2][j] = (dp[(i+1)%2][j] * (N - i + 1)) % MOD; } else { dp[i%2][j] = (dp[(i+1)%2][j] + dp[i%2][j-1] * (i - (j-1)) * (N - j + 1)) % MOD; } } } cout << dp[N%2][N] << endl; return 0; }