#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int N;
long long S, F[25];
int bit[25];
long long inv[25];
long long power(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y & 1) res = res * x % mod;
    x = x * x % mod;
    y >>= 1;
  }
  return res;
}
void pre(int n) {
  bit[0] = 1;
  for (int i = 1; i <= n; i++) {
    bit[i] = bit[i - 1] << 1;
  }
  for (int i = 1; i <= n; i++) {
    inv[i] = power(i, mod - 2);
  }
}
long long C(long long x, long long y) {
  long long res = 1;
  for (int i = 1; i <= x; i++) {
    res = res * inv[i] % mod;
  }
  for (int i = 0; i < x; i++) {
    res = (y - i) % mod * res % mod;
  }
  return res;
}
void solve() {
  long long ans = 0;
  for (int i = 0; i < bit[N]; i++) {
    long long t = S;
    int c = 0;
    for (int j = 1; j <= N; j++) {
      if (i & bit[j - 1]) {
        t -= F[j] + 1;
        c++;
      }
    }
    if (t < 0) continue;
    if (c & 1)
      ans = (ans - C(N - 1, t + N - 1)) % mod;
    else
      ans = (ans + C(N - 1, t + N - 1)) % mod;
  }
  ans = (ans + mod) % mod;
  printf("%lld\n", ans);
}
int main() {
  pre(20);
  scanf("%d%lld", &N, &S);
  for (int i = 1; i <= N; i++) {
    scanf("%lld", &F[i]);
  }
  solve();
  return 0;
}
