#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long C[161][161];
long long nCr(long long N, long long R) {
  if (N == R || R == 0) {
    return 1;
  }
  if (R < 0 || N < R) {
    return 0;
  }
  if (C[N][R]) {
    return C[N][R];
  }
  return (C[N][R] = (nCr(N - 1, R) + nCr(N - 1, R - 1)) % mod);
}
int A[10];
long long dp[101], dp2[120];
long long ans(long long len) {
  if (len == 0) {
    return 0;
  }
  long long ret = 0;
  for (int fd = 1; fd <= 9; fd++) {
    bool rev = 0;
    if (A[fd] > 0) {
      rev = 1;
      A[fd]--;
    }
    memset(dp, 0, sizeof(dp));
    for (int dc = A[0]; dc <= len - 1; dc++) {
      dp[len - 1 - dc] = nCr(len - 1, dc);
    }
    for (int d = 1; d <= 9; d++) {
      for (int i = 0; i <= 100; i++) {
        dp2[i] = dp[i];
        dp[i] = 0;
      }
      for (int tot = 0; tot <= len - 1; tot++) {
        for (int dc = A[d]; dc <= tot; dc++) {
          dp[tot - dc] += nCr(tot, dc) * dp2[tot];
          dp[tot - dc] %= mod;
        }
      }
    }
    ret = (ret + dp[0]) % mod;
    if (rev) {
      A[fd]++;
    }
  }
  return ret + ans(len - 1);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n;
  cin >> n;
  for (int i = 0; i < 10; i++) {
    cin >> A[i];
  }
  cout << ans(n) % mod;
  return 0;
}
