#include<stdio.h> #include<algorithm> using namespace std; long long mod=1000000007; int b[5100]; int c[5100]; long long dp[5100]; long long fact[5100]; int main(){ int M=5100; fact[0]=1; for(int i=1;i<M;i++)fact[i]=fact[i-1]*i%mod; int a; scanf("%d",&a); for(int i=0;i<a;i++){ scanf("%d",b+i); c[b[i]]++; } dp[0]=1; for(int i=0;i<a;i++){ for(int j=a-1;j>=0;j--){ dp[j+1]=(dp[j+1]+dp[j]*c[i])%mod; } } long long ret=0; for(int i=0;i<=a;i++){ if(i%2){ ret=(ret+mod-dp[i]*fact[a-i]%mod)%mod; }else{ ret=(ret+dp[i]*fact[a-i])%mod; } } printf("%lld\n",ret); }