#include <bits/stdc++.h>
using namespace std;
int a[10];
long long dp[101][10], NK[101][101];
long long solve(int n, int c) {
  if (!n) {
    bool inv = false;
    for (int i = int(c); i < int(10); i++) inv |= !!a[i];
    return !inv;
  }
  if (c == 10) return 0;
  if (~dp[n][c]) return dp[n][c];
  dp[n][c] = 0;
  for (int i = int(a[c]); i < int(n + 1); i++) {
    dp[n][c] = (dp[n][c] + NK[n][i] * solve(n - i, c + 1)) % 1000000007;
  }
  return dp[n][c];
}
int main() {
  int N;
  NK[0][0] = 1;
  for (int i = int(1); i < int(101); i++) {
    NK[i][0] = 1;
    for (int j = int(1); j < int(i + 1); j++)
      NK[i][j] = (NK[i - 1][j - 1] + NK[i - 1][j]) % 1000000007;
  }
  while (cin >> N) {
    for (int i = int(0); i < int(10); i++) cin >> a[i];
    long long ans = 0;
    for (int dig = int(1); dig < int(N + 1); dig++) {
      for (int i = int(1); i < int(10); i++) {
        memset(dp, -1, sizeof(dp));
        bool u = !!a[i];
        a[i] -= u;
        ans = (ans + solve(dig - 1, 0)) % 1000000007;
        a[i] += u;
      }
    }
    cout << ans << endl;
  }
  return 0;
}
