#include #define lint __int128 #define int long long #define Il inline #define fi first #define se second #define vec vector #define pb push_back #define IT ::iterator #define p_q priority_queue using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair pii; typedef double db; const int N=5e3,mod=1e9+7; const db eps=1e-9,pi=acos(-1.0); mt19937 rnd(time(0)); Il int rint(int l,int r){return rnd()%(r-l+1)+l;} // bool P1; Il int qpow(int x,int y){ int t=1; for(;y;y>>=1,x=x*x%mod){ if(y&1){ t=t*x%mod; } } return t; } int n,a[N+5],jc[N+5],iv[N+5],c[N+5],f[N+5],ans=0; Il int C(int x,int y){ return x<0||y<0||x>n; for(int i=1;i<=n;i++){ cin>>a[i],c[++a[i]]++; } f[0]=1; for(int i=1;i<=N;i++){ for(int j=n;j;j--){ f[j]=(f[j]+f[j-1]*c[i]%mod)%mod; } } for(int i=0;i<=n;i++){ // cout<