#include #include #include #include #include #include #include #define N_MAX 200002 using namespace std; typedef long long ll; const ll MOD = 1000000007; ll inv[N_MAX],fac[N_MAX],finv[N_MAX]; void init(){ fac[0]=fac[1]=1; finv[0]=finv[1]=1; inv[1]=1; for(int i=2;i> N; init(); for(int i = 0; i < N; i++) { cin >> A[i]; cnt[A[i]]++; } dp[0][0] = 1; for(int i = 0; i < N; i++){ for(int j = 0; j <= i; j++){ dp[(i+1)%2][j] += dp[i%2][j]; dp[(i+1)%2][j] %= MOD; dp[(i+1)%2][j+1] += dp[i%2][j]*cnt[i]; dp[(i+1)%2][j+1] %= MOD; } } ll ans = 0; for(int i = 0; i <= N; i++){ ll c = dp[N%2][i]; ll tmp = (fac[N-i]*c)%MOD; if(i%2 == 0) ans += tmp; else ans -= tmp; ans %= MOD; } cout << (ans+MOD)%MOD << endl; }