#include #include using namespace std; typedef long long ll; const ll MOD = 1e9 + 7; ll solve(const vector& dames){ const int n = dames.size(); vector cnt(n, 0); for(int d : dames){ ++cnt[d]; } vector dp(n + 1, 0); dp[0] = 1; for(int c : cnt){ for(int s=n-1;s>=0;s--){ dp[s+1] = (dp[s+1] + dp[s] * c % MOD) % MOD; } } vector perms(n + 1); perms[0] = 1; for(int i=1;i<=n;i++)perms[i] = perms[i-1] * i % MOD; ll res = 0; for(int i=0;i<=n;i++){ ll tmp = dp[i] * perms[n-i] % MOD; if(i % 2 == 0) { res = (res + tmp) % MOD; } else { res = (res - tmp + MOD) % MOD; } } return res; } int main(){ int N; cin >> N; vector dames(N); for(int i=0;i> dames[i]; cout << solve(dames) << endl; return 0; }