#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long Mod(long long a, long long b) {
  long long ans = 1;
  a %= mod;
  while (b) {
    if (b & 1) ans = ans * a % mod;
    a = a * a % mod;
    b >>= 1;
  }
  return ans;
}
long long C(long long a, long long b) {
  if (b > a) return 0;
  if (a - b < b) b = a - b;
  long long s1 = 1, s2 = 1;
  for (long long i = 1; i <= b; i++) {
    s1 = s1 * (a - i + 1) % mod;
    s2 = s2 * i % mod;
  }
  return s1 * Mod(s2, mod - 2) % mod;
}
long long Lucas(long long a, long long b) {
  if (!b) return 1;
  return C(a % mod, b % mod) * Lucas(a / mod, b / mod) % mod;
}
int main() {
  int n;
  long long s, f[25];
  scanf("%d%I64d", &n, &s);
  for (int i = 0; i < n; i++) scanf("%I64d", &f[i]);
  long long ans = 0;
  ans += Lucas(s + n - 1, n - 1);
  int m = 1 << n;
  for (int i = 1; i < m; i++) {
    int k = i, cnt = 0, a[22], u = 0;
    long long sum = 0;
    while (k) {
      if (k & 1) a[cnt++] = u, sum += f[u] + 1;
      u++, k >>= 1;
    }
    if (sum > s) continue;
    if (cnt & 1)
      ans = (ans - Lucas(s - sum + n - 1, n - 1)) % mod;
    else
      ans = (ans + Lucas(s - sum + n - 1, n - 1)) % mod;
  }
  ans = (ans + mod) % mod;
  printf("%I64d\n", ans);
  return 0;
}
