#include <cstdio>

using namespace std;
int n,i,j,x,y,nr[1000004],f[1000004],im[1000004];
long long p,p1,p2;
int main()
{
    scanf ("%d", &n);
    for (i=1;i<=n;i++)
    {
        scanf ("%d", &x);
        nr[x]++;
    }
    f[0]=1;
    for (i=1;i<=n;i++)
    {
        p=(1LL)*f[i-1]*i%1000000007;
        f[i]=p;
    }
    for (i=0;i<=n;i++)
    {
        x=f[i];
        p=1LL;
        p1=0LL+x;
        y=1000000005;
        while (y>0)
        {
            if (y%2==1)
                p=((1LL)*p*p1)%1000000007;
            p1=(1LL)*p1*p1%1000000007;
            y/=2;
        }
        im[i]=p;
    }
    p=1LL;
    for (i=1;i<=1000000;i++)
    {
        if (nr[i]>=1)
        {
            p1=0LL;
            p2=0LL;
            for (j=0;j<=nr[i];j++)
            {
                p1=(1LL)*f[nr[i]]*im[j]%1000000007*im[nr[i]-j]%1000000007;
                p1=(0LL)+(1LL)*p1*p1%1000000007;
                p2=((0LL)+p2+p1)%1000000007;
            }
            p=(1LL)*p*p2%1000000007;
        }
    }
    p=0LL+p-1;
    if (p<0)
        p+=1000000007;
    printf ("%lld", p);
    return 0;
}