#include using namespace std; const int Mod = 1e9+7, ValMax = 1e6; typedef long long ll; int n, x, i, ap[ValMax+5], j; ll ans, sum, fact[ValMax], ifact[ValMax]; ll Comb(int n, int k) { return fact[n] * ifact[k] % Mod * ifact[n-k] % Mod; } ll sqr(ll x) { return x * x % Mod; } ll power(ll a, int b) { if(!b) return 1; if(b&1) return a*power(a*a%Mod, b/2) % Mod; return power(a*a%Mod, b/2); } int main() { // freopen("input", "r", stdin); // freopen("output", "w", stdout); scanf("%d", &n); for(i=1; i<=n; ++i) { scanf("%d", &x); ++ap[x]; } fact[0] = ifact[0] = 1; for(i=1; i<=n; ++i) fact[i] = fact[i-1] * i % Mod; ifact[n] = power(fact[n], Mod-2); for(i=n-1; i; --i) ifact[i] = ifact[i+1] * (i+1) % Mod; ans = 1; for(i=1; i<=ValMax; ++i) if(ap[i]) { sum = 0; for(j=0; j<=ap[i]; ++j) sum = (sum + sqr(Comb(ap[i], j))) % Mod; ans = ans * sum % Mod; } ans = (ans-1+Mod) % Mod; printf("%lld\n", ans); return 0; }