#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long a[25], niyuan;
long long pow_mod(long long a, long long b, long long c) {
  long long ans = 1 % c;
  a %= c;
  while (b) {
    if (b & 1) ans = ans * a % c;
    a = a * a % c;
    b >>= 1;
  }
  return ans;
}
long long C(long long n, long long m) {
  if (n < 0 || m < 0 || n < m) return 0;
  n %= mod;
  m %= mod;
  if (n == 0 || m == 0) return 1;
  long long ans = 1;
  for (long long i = n - m + 1; i <= n; i++) ans = ans * i % mod;
  ans *= niyuan;
  ans %= mod;
  return ans;
}
int main() {
  long long n, m;
  scanf("%lld%lld", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%lld", &a[i]);
  long long t = 1;
  for (int i = 2; i < n; i++) t = t * i % mod;
  niyuan = pow_mod(t, mod - 2, mod);
  long long ans = C(n + m - 1, n - 1);
  for (long long x = 1; x < (1 << n); x++) {
    long long tt = n + m, p = 0;
    for (int i = 0; i < n; i++)
      if ((x >> i) & 1) {
        p++;
        tt -= a[i + 1] + 1;
      }
    tt--;
    if (p & 1)
      ans = (ans - C(tt, n - 1)) % mod;
    else
      ans = (ans + C(tt, n - 1)) % mod;
  }
  printf("%lld\n", (ans + mod) % mod);
  return 0;
}
