P=1e9+7;
a[6000],n,t,ans,i,k;
long dp[6000],f;
main(){
	scanf("%d",&n);
	for(;~scanf("%d",&t);)a[t]++;
	f=dp[0]=1;
	for(k=0;k<n;k++)for(i=k;i>=0;i--)dp[i+1]=(dp[i+1]+dp[i]*a[k])%P;
	for(i=0;i<=n;f=(f*++i)%P)ans=(ans+(n-i&1?-1:1)*f*dp[n-i])%P;
	printf("%d",(ans+P)%P);
}