#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
vector<long long> sil;
long long fme(long long a, long long b) {
  if (b == 0) return 1;
  if (b % 2 == 1) return (fme(a, b - 1) * a) % MOD;
  long long tmp = fme(a, b / 2);
  return (tmp * tmp) % MOD;
}
long long nck(long long n, long long k) {
  if (k < 0 || k > n) return 0;
  return ((sil[n] * fme(sil[k], MOD - 2) % MOD) * fme(sil[n - k], MOD - 2)) %
         MOD;
}
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  sil.resize(2002);
  sil[0] = 1;
  for (long long i = 1; i < sil.size(); i++) sil[i] = (i * sil[i - 1]) % MOD;
  int n;
  cin >> n;
  long long res = 1;
  long long curSiz = 0;
  vector<int> tab(n);
  for (int i = 0; i < n; i++) {
    cin >> tab[i];
    res = res * nck(curSiz + tab[i] - 1, tab[i] - 1) % MOD;
    curSiz += tab[i];
  }
  cout << res << endl;
}
