#include using namespace std; const int lim=1000000,mod=(1e9)+7; int v[lim+10],fact[100010]; int rid_put(int a,int n) { int p=1; for(;n;n>>=1) { if(n&1) p=(1LL*p*a)%mod; a=(1LL*a*a)%mod; } return p; } int comb(int n,int m) { return (1LL*fact[n]*rid_put((1LL*fact[m]*fact[n-m])%mod,mod-2))%mod; } int main() { //freopen("file.in", "r", stdin); //freopen("file.out", "w", stdout); int n,a; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a); v[a]++; } fact[0]=1; for(int i=1;i<=n;i++) fact[i]=(1LL*fact[i-1]*i)%mod; int sol=0; for(int i=1;i<=lim;i++) if(v[i]) { int sol1=sol; for(int j=1;j<=v[i];j++) { int c=comb(v[i],j); sol1=(sol1+1LL*((1LL*c*c)%mod)*sol)%mod; sol1=(sol1+1LL*c*c)%mod; } sol=sol1; } printf("%d",sol); return 0; }