#include <bits/stdc++.h>
using namespace std;
long long ara[25];
long long fact[25];
long long BM(long long a, long long b, long long m) {
  if (b == 0) return 1;
  long long ret = BM(a, b / 2, m);
  ret *= ret;
  ret %= m;
  if (b % 2) ret *= a;
  return ret % m;
}
long long call(long long n, long long k) {
  if (n < k) return 0;
  long long ret = 1;
  ret *= BM(fact[k], 1000000007 - 2, 1000000007);
  ret %= 1000000007;
  for (long long i = 1; i <= k; i++) {
    ret *= (n % 1000000007);
    ret %= 1000000007;
    n--;
  }
  return ret;
}
int main() {
  long long n, k, i, mask, l, u, ans, x, cnt, j;
  fact[0] = 1;
  for (i = 1; i <= 24; i++) fact[i] = (fact[i - 1] * i) % 1000000007;
  scanf("%lld %lld", &k, &n);
  for (i = 0; i < k; i++) {
    scanf("%lld", &ara[i]);
    ara[i]++;
  }
  if (n >= 0) {
    mask = (1 << k) - 1;
    ans = call(n + k - 1, k - 1);
    for (i = 1; i <= mask; i++) {
      x = n;
      cnt = 0;
      for (j = 0; j < k; j++) {
        if ((i & (1 << j)) != 0) {
          x -= ara[j];
          cnt++;
        }
      }
      if (x >= 0) {
        if (cnt % 2) {
          ans -= call(x + k - 1, k - 1);
          ans %= 1000000007;
        } else {
          ans += call(x + k - 1, k - 1);
          ans %= 1000000007;
        }
      }
    }
  } else {
    ans = 0;
  }
  ans += 1000000007;
  ans %= 1000000007;
  printf("%lld\n", ans);
  return 0;
}
