#include <cstdio>
#include <algorithm>

#define MOD 1000000007LL

using namespace std;

int ap[1000010];
long long fact[200100], inv[200100], comb[100100];

long long put (long long a, long long p)
{
    long long rez = 1LL;
    for (long long i = 0LL; (1LL << i) <= p; i += 1LL)
    {
        if ((1LL << i) & p) rez *= a, rez %= MOD;

        a *= a;
        a %= MOD;
    }

    return rez;
}

int main ()
{
   // freopen ("file.in", "r", stdin);

    int n;
    scanf ("%d", &n);

    fact[0] = inv[0] = 1LL;
    for (int i = 1; i <= 200000; ++i)
    {
        fact[i] = 1LL * i * fact[i - 1];
        fact[i] %= MOD;

        if (i <= 100000) inv[i] = put (fact[i], MOD - 2LL);
    }

    for (int i = 1; i <= 100000; ++i)
    {
        comb[i] = fact[2 * i] * inv[i];
        comb[i] %= MOD;

        comb[i] *= inv[i];
        comb[i] %= MOD;
    }

    for (int i = 1; i <= n; ++i)
    {
        int x;
        scanf ("%d", &x);

        ++ap[x];
    }

    long long rez = 1LL;
    for (int i = 1; i <= 1000000; ++i)
    {
        if (ap[i] == 0) continue;

        rez *= comb[ap[i]];
        rez %= MOD;
    }

    rez -= 1LL;
    rez %= MOD;
    rez += MOD;
    rez %= MOD;

    printf ("%lld\n", rez);

    return 0;
}