#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]; } else { dp[i%2][j] = (dp[(i+1)%2][j] + dp[i%2][j-1] * (i - (j-1))) % MOD; } } } long long Na = 1; for (int i = 1; i <= N; i++) Na = (Na * i) % MOD; cout << (((dp[N%2][N] * Na) % MOD) * Na) % MOD << endl; return 0; }