#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
long long f[25];
long long Pow(long long a, long long n) {
  long long sum = 1;
  while (n) {
    if (n & 1) sum = sum * a % MOD;
    a = a * a % MOD;
    n >>= 1;
  }
  return sum;
}
long long C(long long n, long long m) {
  long long a = 1, b = 1;
  if (m > n) return 0;
  if (m > n / 2) {
    m = n - m;
  }
  for (long long i = 1; i <= m; i++) {
    a = a * ((n + i - m) % MOD) % MOD;
    b = b * (i % MOD) % MOD;
  }
  return (a * Pow(b, MOD - 2) % MOD) % MOD;
}
int main() {
  int n;
  long long s;
  scanf("%lld %lld", &n, &s);
  for (int i = 0; i < n; i++) scanf("%lld", &f[i]);
  long long ans = 0;
  for (int k = 0; k < (1 << n); k++) {
    long long sum = s;
    int flag = 0;
    for (int i = 0; i < n; i++) {
      if ((1 << i) & k) {
        sum -= f[i] + 1;
        flag ^= 1;
      }
    }
    if (sum < 0) continue;
    if (!flag) {
      ans += C(sum + n - 1, n - 1);
      ans %= MOD;
    } else {
      ans -= C(sum + n - 1, n - 1);
      ans = (ans % MOD + MOD) % MOD;
    }
  }
  printf("%lld\n", ans);
  return 0;
}
