#include <bits/stdc++.h>
using namespace std;
long long pow_mod(long long a, long long n, long long p) {
  long long ans = 1, t = a;
  while (n) {
    if (n & 1) {
      ans = ans * t % p;
    }
    t = t * t % p;
    n >>= 1;
  }
  return ans;
}
long long cal(long long n, long long m, long long p) {
  if (m > n - m) m = n - m;
  long long ans = 1;
  for (int i = 1; i <= m; i++) {
    ans = ans * (n - i + 1) % p;
    int a = pow_mod(i, p - 2, p);
    ans = ans * a % p;
  }
  return ans;
}
long long com_mod(long long n, long long m, long long p) {
  if (n < m) return 0;
  return cal(n, m, p);
}
long long lucas(long long n, long long m, long long p) {
  long long r = 1;
  while (n && m && r) {
    r = r * com_mod(n % p, m % p, p) % p;
    n /= p;
    m /= p;
  }
  return r;
}
int main() {
  int k;
  long long a[1099];
  scanf("%d", &k);
  for (int i = 0; i < k; i++) {
    scanf("%I64d", &a[i]);
  }
  long long sum = a[0];
  long long ansl = 1;
  for (int i = 1; i < k; i++) {
    if (a[i] == 1) {
      sum++;
      continue;
    }
    sum = sum + a[i] - 1;
    ansl *= lucas(sum, a[i] - 1, 1000000007);
    ansl %= 1000000007;
    sum++;
  }
  printf("%I64d\n", ansl);
}
