#include <bits/stdc++.h>

using namespace std;

#define MAXN 100500
#define MAXV 1000500
#define MOD 1000000007

int N;
int f[MAXV];

long long fastPow(long long a, int p) {
  long long ret = 1;

  while (p > 0) {
    if (p & 1) {
      ret = ret * a % MOD;
    }
    a = a * a % MOD;
    p >>= 1;
  }

  return ret;
}

int main() {
	// assert(freopen("buckets.in", "r", stdin));
	// assert(freopen("buckets.out", "w", stdout));
	cin.sync_with_stdio(false);

	int N;
  cin >> N;

  int x;
  for (int i = 0; i < N; i++) {
    cin >> x;
    f[x]++;
  }

  long long sum = 1;
  for (x = 0; x < MAXV; x++) {
    if (f[x] > 0) {
      long long prevSum = sum;
      sum = 0;
      
      long long comb = 1;
      for (int y = 0; y <= f[x]; y++) {
        sum += prevSum * comb % MOD * comb % MOD;
        sum %= MOD;

        comb = comb * (f[x] - y) % MOD;
        comb = comb * fastPow(y + 1, MOD - 2) % MOD;
      }
    }
  }

  sum += MOD - 1;
  sum %= MOD;

  cout << sum << endl;

	return 0;
}