#include using namespace std; typedef long long ll; #define REP(i,a,n) for(ll i=(a); i<(ll)(n); i++) ll MOD = 1e9 + 7; ll pow_mod(ll x, ll n) { ll re = 1; while(n > 0) { if (n & 1) re = (re * x) % MOD; x = (x * x) % MOD; n >>= 1; } return re; } ll cm[10001][10001]; ll comb(ll n, ll r) { cm[n][r] = ( cm[n-1][r-1] ? cm[n-1][r-1] : comb(n-1, r-1) ) + ( cm[n-1][r] ? cm[n-1][r] : comb(n-1, r) ); return cm[n][r] % MOD; } int main(void) { ll N; cin >> N; ll ans = 0; REP(i, 0, N+1) { cm[i][0] = 1; cm[i][i] = 1; } REP(x, 1, N) { ans = (ans + ( comb(N, x) * pow_mod(x, N - x)) ) % MOD; } cout << ++ans << endl; return 0; }