#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 30;
const long long mod = 1000000007;
long long n, k;
long long s[MAXN];
long long fac[MAXN], inv;
long long fastpow(long long x, long long k) {
  long long ans = 1;
  while (k) {
    if (k & 1) ans = ans * x % mod;
    k >>= 1;
    x = x * x % mod;
  }
  return ans;
}
long long calc(long long n, long long m) {
  long long ans = 1;
  if (n < 0) return 0;
  for (long long i = n + 1; i <= n + m - 1; i++) ans = i % mod * ans % mod;
  ans = ans * inv % mod;
  return ans;
}
void PRE() {
  fac[0] = 1;
  for (long long i = 1; i <= n; i++) fac[i] = fac[i - 1] * i % mod;
  inv = fastpow(fac[n - 1], mod - 2);
}
signed main() {
  scanf("%lld%lld", &n, &k);
  for (long long i = 0; i < n; i++) scanf("%lld", &s[i]);
  PRE();
  long long ALL = (1 << n), ans = 0;
  for (long long S = 0; S < ALL; S++) {
    long long tmp = 0;
    long long flag = 1;
    for (long long j = 0; j < n; j++)
      if (S & (1 << j)) tmp += s[j] + 1, flag = -flag;
    ans = (ans + flag * calc(k - tmp, n) + mod) % mod;
  }
  printf("%lld\n", ans);
}
