#include #define int long long using namespace std; const int N=5010,mod=1e9+7; int n,x,ans,cnt[N],g[2][N],f[N],pre[N]; signed main(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>n,pre[0]=g[0][0]=1; for(int i=1;i<=n;i++)cin>>x,cnt[x+1]++,pre[i]=pre[i-1]*i%mod; for(int i=1;i<=n;i++){ memset(g[i&1],0,sizeof(g[i&1])),g[i&1][0]=1; for(int j=1;j<=i;j++)g[i&1][j]=(g[(i&1)^1][j]+g[(i&1)^1][j-1]*cnt[i])%mod; } for(int i=0;i<=n;i++)f[i]=g[n&1][i]*pre[n-i]%mod; for(int i=0;i<=n;i++)ans=(ans+((i&1)?mod-f[i]:f[i]))%mod; cout<