#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

const int MOD = 1000000007;
const int VAL_MAX = 1000005;

long long fact[VAL_MAX];

long long power(long long base, long long exp)
{
    if(exp == 0)
        return 1;
    if(exp % 2 == 0)
    {
        long long x = power(base, exp / 2);
        return (x * x) % MOD;
    }
    return (1LL * base * power(base, exp - 1)) % MOD;
}

long long invers(long long x)
{
   return power(x, MOD-2);
}

long long comb(int n, int k)
{
    return (fact[n] * invers(fact[k] * fact[n-k])) % MOD;
}

long long patrat(long long x)
{
    return (x * x) % MOD;
}

int main()
{
    fact[0] = 1;
    for(int i = 1; i < VAL_MAX; ++i)
        fact[i] = fact[i-1] * i;
    int n, x;
    cin >> n;
    vector<int> ap(VAL_MAX);
    for(int i = 1; i <= n; ++i)
    {
        cin >> x;
        ap[x]++;
    }
    long long rasp = 1;
    for(int i = 0; i < VAL_MAX; ++i)
    {
        if(ap[i] == 0)
            continue;
        long long x = 0;
        for(int j = 0; j <= ap[i]; ++j)
            x = (x + patrat(comb(ap[i], j))) % MOD;
        rasp = (rasp * x) % MOD;
    }
    rasp--;
    if(rasp < 0)
        rasp += MOD;
    cout << rasp;
    return 0;
}