#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 10;
const int MOD = 1e9 + 7;
long long fac[maxn + 10];
long long rfac[maxn + 10];
long long qpow(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) {
      res = ((res * a) % MOD);
    }
    a = ((a * a) % MOD);
    b >>= 1;
  }
  return res;
}
void init() {
  fac[0] = fac[1] = 1;
  for (int i = 2; i <= maxn; i++) {
    fac[i] = ((fac[i - 1] * i) % MOD);
  }
  rfac[maxn] = qpow(fac[maxn], MOD - 2);
  for (int i = maxn; i > 0; i--) {
    rfac[i - 1] = ((rfac[i] * i) % MOD);
  }
}
long long n, sum, res = 1;
long long a[maxn];
int main() {
  ios_base::sync_with_stdio(0);
  init();
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    sum += a[i];
  }
  for (int i = n - 1; i > 0; i--) {
    res =
        ((res * ((((fac[sum - 1] * rfac[a[i] - 1]) % MOD) * rfac[sum - a[i]]) %
                 MOD)) %
         MOD);
    sum -= a[i];
  }
  printf("%I64d\n", res);
  return 0;
}
