#include <bits/stdc++.h>
using namespace std;
const int N = 20;
const long long mod = 1e9 + 7;
long long a[N], sum[1 << N], fi;
long long Pow(long long a, long long b) {
  long long res = 1;
  for (; b; b = b >> 1) res = res * (b & 1 ? a : 1) % mod, a = a * a % mod;
  return res;
}
long long C(long long n, long long m) {
  long long res = 1;
  for (long long i = n; i > n - m; i--) res = i % mod * res % mod;
  res = res * fi % mod;
  return res;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n, s;
  cin >> n >> s;
  for (int i = 0; i < n; i++) cin >> a[i];
  fi = 1;
  for (int i = 2; i < n; i++) fi = fi * Pow(i, mod - 2) % mod;
  long long ans = 0;
  for (int msk = 0; msk < (1 << n); msk++) {
    if (msk) {
      int b = __builtin_ctz(msk);
      sum[msk] = sum[msk ^ (1 << b)] + a[b] + 1;
    }
    if (s < sum[msk]) continue;
    ans = (ans + (__builtin_popcount(msk) & 1 ? -1LL : 1LL) *
                     C(s - sum[msk] + n - 1, n - 1)) %
          mod;
  }
  ans = (ans + mod) % mod;
  cout << ans;
  return 0;
}
