#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <climits>
#include <iomanip>
#include <vector>
using namespace std;
// P.Moriarty //
#define AAD ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr);
long long fac(int n)
{
long long fact = 1;
for (int i = 1;i <= n;i++)
{
fact *= i;
}
return fact;
}
long long per(int n, int j)
{
long long p = 1;
for (int i = n; i > n - j; i--)
{
p *= i;
}
return p;
}
bool lucky(int ch)
{
bool l = true;
while (ch > 0)
{
int d = ch % 10;
if (d == 7 || d == 4)
{
ch /= 10;
}
else
{
l = false;
break;
}
}
return l;
}
int pro(int x, int i)
{
int r = 1;
for (int j = 1;j <= i;j++)
{
r *= x;
}
return r;
}
bool prime(int x) {
if (x <= 1) return false;
if (x == 2 || x == 3) return true;
if (x % 2 == 0 || x % 3 == 0) return false;
for (int i = 5; i <= sqrt(x); i += 6) {
if (x % i == 0 || x % (i + 2) == 0) return false;
}
return true;
}
int f(string a, string b)
{
int c = 0;
for (int i = 0;i < a.size();i++)
{
if (a[i] == b[i])
c++;
}
return c;
}
vector<int>freq(1000000,0);
long long Mod(int ones)
{
long long Ans = 1;
while (ones--)
{
Ans *= 2;
Ans %= 10000000007;
}
Ans %= 10000000007;
return Ans;
}
int main()
{
AAD;
int x;
cin >> x;
vector<int>arr(x);
int c = x;
for (int i = 0;i < x;i++)
{
cin >> arr[i];
freq[arr[i]]++;
}
for (int i = 0;i < x;i++)
{
if (freq[arr[i]] > 1)
{
c++;
freq[arr[i]] = 1;
}
}
long long a = Mod(c);
cout << c%1000000007;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjbGltaXRzPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vIFAuTW9yaWFydHkgLy8KI2RlZmluZSBBQUQgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZShudWxscHRyKTsgY291dC50aWUobnVsbHB0cik7CmxvbmcgbG9uZyBmYWMoaW50IG4pCnsKCWxvbmcgbG9uZyBmYWN0ID0gMTsKCWZvciAoaW50IGkgPSAxO2kgPD0gbjtpKyspCgl7CgkJZmFjdCAqPSBpOwoJfQoJcmV0dXJuIGZhY3Q7Cn0KbG9uZyBsb25nIHBlcihpbnQgbiwgaW50IGopCnsKCWxvbmcgbG9uZyBwID0gMTsKCWZvciAoaW50IGkgPSBuOyBpID4gbiAtIGo7IGktLSkKCXsKCQlwICo9IGk7Cgl9CglyZXR1cm4gcDsKfQpib29sIGx1Y2t5KGludCBjaCkKewoJYm9vbCBsID0gdHJ1ZTsKCgl3aGlsZSAoY2ggPiAwKQoJewoJCWludCBkID0gY2ggJSAxMDsKCQlpZiAoZCA9PSA3IHx8IGQgPT0gNCkKCQl7CgkJCWNoIC89IDEwOwoJCX0KCQllbHNlCgkJewoJCQlsID0gZmFsc2U7CgkJCWJyZWFrOwoJCX0KCX0KCglyZXR1cm4gbDsKCn0KaW50IHBybyhpbnQgeCwgaW50IGkpCnsKCWludCByID0gMTsKCWZvciAoaW50IGogPSAxO2ogPD0gaTtqKyspCgl7CgkJciAqPSB4OwoJfQoJcmV0dXJuIHI7Cn0KCmJvb2wgcHJpbWUoaW50IHgpIHsKCWlmICh4IDw9IDEpIHJldHVybiBmYWxzZTsKCWlmICh4ID09IDIgfHwgeCA9PSAzKSByZXR1cm4gdHJ1ZTsKCWlmICh4ICUgMiA9PSAwIHx8IHggJSAzID09IDApIHJldHVybiBmYWxzZTsKCglmb3IgKGludCBpID0gNTsgaSA8PSBzcXJ0KHgpOyBpICs9IDYpIHsKCQlpZiAoeCAlIGkgPT0gMCB8fCB4ICUgKGkgKyAyKSA9PSAwKSByZXR1cm4gZmFsc2U7Cgl9CgoJcmV0dXJuIHRydWU7Cn0KCmludCBmKHN0cmluZyBhLCBzdHJpbmcgYikKewoJaW50IGMgPSAwOwoJZm9yIChpbnQgaSA9IDA7aSA8IGEuc2l6ZSgpO2krKykKCXsKCQlpZiAoYVtpXSA9PSBiW2ldKQoJCQljKys7Cgl9CglyZXR1cm4gYzsKfQp2ZWN0b3I8aW50PmZyZXEoMTAwMDAwMCwwKTsKbG9uZyBsb25nIE1vZChpbnQgb25lcykKewoJbG9uZyBsb25nIEFucyA9IDE7Cgl3aGlsZSAob25lcy0tKQoJewoJCUFucyAqPSAyOwoJCUFucyAlPSAxMDAwMDAwMDAwNzsKCX0KCUFucyAlPSAxMDAwMDAwMDAwNzsKCXJldHVybiBBbnM7Cn0KCmludCBtYWluKCkKewoJQUFEOwoJaW50IHg7CgljaW4gPj4geDsKCXZlY3RvcjxpbnQ+YXJyKHgpOwoJaW50IGMgPSB4OwoJZm9yIChpbnQgaSA9IDA7aSA8IHg7aSsrKQoJewoJCWNpbiA+PiBhcnJbaV07CgkJZnJlcVthcnJbaV1dKys7Cgl9CgoJZm9yIChpbnQgaSA9IDA7aSA8IHg7aSsrKQoJewoJCWlmIChmcmVxW2FycltpXV0gPiAxKQoJCXsKCQkJYysrOwoJCQlmcmVxW2FycltpXV0gPSAxOwoJCX0KCX0KCWxvbmcgbG9uZyBhID0gTW9kKGMpOwoJY291dCA8PCBjJTEwMDAwMDAwMDc7Cn0KCgoKCg==