#include <bits/stdc++.h>
using namespace std;
long long S;
long long F[21];
int N;
long long MOD = 1000000007;
long long ANS = 0;
long long trick = 1;
long long qpow(long long num, long long pow, long long mod) {
  if (pow == 1) return num % mod;
  if (!pow) return 1;
  long long tpow = qpow(num, pow / 2, mod);
  if (pow & 1)
    return (tpow * tpow % mod) * num % mod;
  else
    return tpow * tpow % mod;
}
long long inverse(long long a, long long mod) { return qpow(a, mod - 2, mod); }
long long comb(long long m, long long n) {
  if (m < n) {
    return 0;
  }
  long long ans = 1;
  for (long long i = m; i >= m - n + 1; i--) {
    long long t = i % MOD;
    ans *= t;
    ans %= MOD;
  }
  if (n == N - 1) {
    ans *= trick;
    ans %= MOD;
  } else {
    for (int i = 1; i <= n; i++) {
      ans *= inverse(i, MOD);
      ans %= MOD;
    }
  }
  return ans;
}
void calc() {
  int end = 1 << N;
  for (int i = 0; i < end; i++) {
    long long power = 0, coeff = 1;
    for (int j = 0; j < 21; j++) {
      if ((1 << j) & i) {
        power += F[j] + 1;
        coeff *= -1;
      }
    }
    long long temp = coeff * comb(N + S - 1 - power, N - 1);
    ANS += temp + MOD;
    ANS %= MOD;
  }
}
int main() {
  cin >> N >> S;
  for (int i = 0; i < N; i++) {
    cin >> F[i];
  }
  for (int i = 1; i < N; i++) {
    trick *= inverse(i, MOD);
    trick %= MOD;
  }
  calc();
  cout << ANS;
  return 0;
}
