#include #include #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; }