#include <bits/stdc++.h>
using namespace std;
const int P = 1000000007;
const int maxn = 22;
long long m, a[maxn], ans = 0;
long long inv[maxn], n;
long long power(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = res * 1LL * a % P;
    a = 1LL * a * a % P;
    b >>= 1;
  }
  return res;
}
long long C(long long n, long long m) {
  if (n < 0 || m < 0 || n < m) return 0;
  n %= P;
  if (n == 0 || m == 0) return 1LL;
  long long res = 1;
  for (int i = 0; i < m; i++) res = res * (n - i) % P;
  for (int i = 1; i <= m; i++) res = res * inv[i] % P;
  return res;
}
void init() {
  for (int i = 1; i <= 20; i++) inv[i] = power(i, P - 2);
  return;
}
int main() {
  init();
  scanf("%lld%lld", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%lld", a + i);
  for (int s = 0; s < (1 << n); s++) {
    if (s == 0) {
      ans = (ans + C(n + m - 1, n - 1)) % P;
    } else {
      long long tmp = n + m;
      int p = 0;
      for (int i = 1; i <= n; i++) {
        if (s & (1 << i - 1)) {
          p++;
          tmp -= a[i];
        }
      }
      tmp -= p + 1;
      if (p & 1) {
        ans = (ans - C(tmp, n - 1)) % P;
      } else {
        ans = (ans + C(tmp, n - 1)) % P;
      }
    }
  }
  printf("%lld", (ans + P) % P);
  return 0;
}
