#include <bits/stdc++.h>
using namespace std;
long long pow_mul(long long x, long long y) {
  long long ans = 1;
  while (y) {
    if (y & 1) {
      ans *= x;
      ans %= 1000000007;
    }
    x *= x;
    x %= 1000000007;
    y >>= 1;
  }
  return ans;
}
long long n;
long long f[25];
long long s;
int main() {
  scanf("%lld%lld", &n, &s);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &f[i]);
  }
  long long ret = 0;
  for (int i = 0; i < (1 << n); i++) {
    int flag = 1;
    long long tot = s;
    for (int j = 0; j < n; j++) {
      if (i & (1 << j)) {
        flag = -flag;
        tot -= (f[j + 1] + 1);
      }
    }
    if (tot < 0) {
      continue;
    }
    long long s1 = 1, s2 = 1;
    for (int j = 1; j <= n - 1; j++) {
      s1 *= (tot + j) % 1000000007;
      s1 %= 1000000007;
      s2 *= j;
      s2 %= 1000000007;
    }
    s1 *= pow_mul(s2, 1000000007 - 2);
    ret += flag * s1;
    ret = ((ret % 1000000007) + 1000000007) % 1000000007;
  }
  printf("%lld\n", ret);
  return 0;
}
