#include using namespace std; const int MOD = 1e9 + 7; int main() { //ifstream cin("750.in"); int n; cin >> n; map f; for(int i = 0; i < n; ++i) { int x; cin >> x; f[x]++; } vector fact(n + 1, 1), inv(n + 1, 1), invFact(n + 1, 1); for(int i = 1; i <= n; ++i) fact[i] = 1LL * fact[i - 1] * i % MOD; for(int i = 2; i <= n; ++i) inv[i] = (MOD - 1LL * (MOD / i) * inv[MOD % i] % MOD); for(int i = 1; i <= n; ++i) invFact[i] = 1LL * invFact[i - 1] * inv[i] % MOD; auto Comb = [&] (int a, int b) { int ans = fact[a]; ans = 1LL * ans * invFact[b] % MOD; ans = 1LL * ans * invFact[a - b] % MOD; return ans; }; int ans = 1; for(const auto &elem : f) { int temp = 0; for(int i = 1; i <= elem.second; ++i) { int coef = Comb(elem.second, i); coef = 1LL * coef * coef % MOD; temp += 1LL * coef * ans % MOD; temp %= MOD; } ans += temp; ans %= MOD; } ans -= 1; if(ans < 0) ans += MOD; cout << ans << "\n"; }