#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef pair P; const ll MOD=1e9+7; int main() { int n; cin>>n; int ct[5001]={}; for(int i=0; i>a; ct[a]++; } ll dp[2][5001]={}; dp[0][0]=1; for(int i=0; i0) dp[(i+1)%2][j]+=(ll)ct[i]*dp[i%2][j-1]; dp[(i+1)%2][j]%=MOD; } } ll f[5001]; f[0]=1; for(ll i=1; i<=n; i++) f[i]=f[i-1]*i%MOD; ll ans=f[n]; for(int i=1; i<=n; i++){ if(i%2){ ans-=(f[n-i]*dp[n%2][i]%MOD); ans+=MOD; ans%=MOD; }else{ ans+=(f[n-i]*dp[n%2][i]%MOD); ans%=MOD; } } cout<