#include <bits/stdc++.h>
const long long maxn = 25, mod = 1000000007;
long long i, j, k, m, n, mul = 1, ans;
long long finv[maxn], a[maxn];
long long ksm(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;
}
long long c(long long n, long long m) {
  if (n < 0 || m < 0 || m > n) return 0;
  n %= mod, m %= mod;
  long long res = 1;
  for (long long i = n - m + 1; i <= n; i++) res = res * i % mod;
  res = res * finv[m] % mod;
  return res;
}
int main() {
  scanf("%lld%lld", &n, &m);
  for (i = 1; i <= n; i++) scanf("%lld", &a[i]);
  for (i = 1; i <= n; i++) mul = mul * i % mod;
  finv[n] = ksm(mul, mod - 2);
  for (i = n; i >= 1; i--) finv[i - 1] = finv[i] * i % mod;
  ans = c(n + m - 1, n - 1);
  for (k = 1; k < (1 << n); k++) {
    long long cnt = 0, res = n + m - 1;
    for (i = 1; i <= n; i++)
      if ((k >> (i - 1)) & 1) cnt++, res -= a[i] + 1;
    ans = (ans - (cnt % 2 == 0 ? -1 : 1) * c(res, n - 1)) % mod;
  }
  printf("%lld\n", (ans + mod) % mod);
  return 0;
}
