#include <iostream>
#include <vector>
using namespace std;

const int mod = 1000000007;
const int maxn = 100000;
int pow2[maxn + 10]; // pre_pow_arr

void pre_pow() {
    pow2[0] = 1;
    for (int i = 1; i <= maxn; i++) {
        pow2[i] = (1LL * pow2[i - 1] * 2) % mod;
    }
}

int main() {
    pre_pow();
    int n;
    cin >> n;
    vector<int> cnt(n + 1, 0);
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        cnt[x]++;
    }

    long long tot = 1; // F(1)
    long long alt = 1;   // F(-1)
    for (int i = 1; i <= n; i++) {
        if (cnt[i] == 0) continue;
        long long ways = pow2[cnt[i] - 1]; // 2^(c-1)
        tot = tot * (1 + ways) % mod;
        alt = alt * ((1 - ways + mod) % mod) % mod;
    }

    long long inv2 = (mod + 1) / 2; // modinv 2
    long long ans = (tot - alt + mod) % mod * inv2 % mod;
    cout << ans << endl;

    return 0;
}