#include <bits/stdc++.h>
using namespace std;
long long hor;
long long bigMod(long long base, long long pw) {
  if (!pw) return 1LL;
  long long x = bigMod(base, pw >> 1);
  x = (x * x) % 1000000007;
  if (pw & 1) x = (x * base) % 1000000007;
  return x;
}
long long comb(long long n, long long r) {
  if (n == 0 && r == 0) return 1LL;
  long long ret = n % 1000000007;
  for (long long i = n - 1; i > (n - r); i--) {
    ret = (ret * (i % 1000000007)) % 1000000007;
  }
  return (ret * hor) % 1000000007;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n;
  long long s;
  cin >> n >> s;
  vector<long long> f(n);
  for (int i = 0; i < n; i++) {
    cin >> f[i];
  }
  hor = 1;
  for (int i = 1; i < n; i++) {
    hor = (hor * i) % 1000000007;
  }
  hor = bigMod(hor, 1000000007 - 2) % 1000000007;
  int limit = (1 << n);
  long long ways = 0;
  for (int mask = 0; mask < limit; mask++) {
    int setbit = 0;
    long long sum = 0;
    for (int i = 0; i < n; i++) {
      if (mask & (1 << i)) {
        sum += f[i] + 1;
        setbit++;
      }
    }
    if (sum <= s) {
      if (setbit & 1)
        ways =
            (ways - comb(n + (s - sum) - 1, n - 1) + 1000000007) % 1000000007;
      else
        ways = (ways + comb(n + (s - sum) - 1, n - 1)) % 1000000007;
    }
  }
  cout << ways << endl;
  return 0;
}
