#include <bits/stdc++.h>
using namespace std;
long long sum = 0, n, m;
const long long mod = 1e9 + 7;
long long f[25];
long long qpow(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = (ans * a) % mod;
    a = (a * a) % mod;
    b >>= 1;
  }
  return ans;
}
long long getc(long long a, long long b) {
  if (a < b) return 0;
  if (b > a - b) b = a - b;
  long long s1 = 1, s2 = 1;
  for (long long i = 0; i < b; i++) {
    s1 = s1 * (a - i) % mod;
    s2 = s2 * (i + 1) % mod;
  }
  return s1 * qpow(s2, mod - 2) % mod;
}
long long lucas(long long n, long long k) {
  if (k == 0) return 1;
  return getc(n % mod, k % mod) * lucas(n / mod, k / mod) % mod;
}
long long solve() {
  long long ans = 0;
  for (int i = 0; i < (1 << n); i++) {
    long long cnt = 0, sum = m;
    for (int j = 0; j < n; j++) {
      if (i & (1 << j)) {
        sum -= f[j] + 1;
        cnt++;
      }
    }
    if (sum < 0) continue;
    if (cnt & 1)
      ans -= lucas(sum + n - 1, n - 1);
    else
      ans += lucas(sum + n - 1, n - 1);
    ans %= mod;
  }
  return (ans + mod) % mod;
}
int main() {
  scanf("%lld%lld", &n, &m);
  for (int i = 0; i < n; i++) scanf("%lld", &f[i]);
  printf("%lld\n", solve());
  return 0;
}
