#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);
}