#include <bits/stdc++.h>
using namespace std;
const int mo = 1e9 + 7;
long long qpow(long long a, long long k) {
  long long ans = 1;
  while (k) {
    if (k & 1) ans = (ans * a) % mo;
    a = (a * a) % mo;
    k >>= 1;
  }
  return ans;
}
long long C(long long a, long long b) {
  if (a < b) return 0;
  if (b > a - b) b = a - b;
  long long up = 1, down = 1;
  for (long long i = 0; i < b; i++) {
    up = up * (a - i) % mo;
    down = down * (i + 1) % mo;
  }
  return up * qpow(down, mo - 2) % mo;
}
long long lucas(long long a, long long b) {
  if (b == 0) return 1;
  return C(a % mo, b % mo) * lucas(a / mo, b / mo) % mo;
}
long long s, f[100];
int main() {
  int n, i, j;
  cin >> n >> s;
  for (i = 0; i < n; i++) cin >> f[i];
  long long ans = 0;
  int up = (1 << n) - 1;
  for (i = 0; i <= up; i++) {
    int sta = 1;
    long long now = s;
    for (j = 0; j < n; j++) {
      if (i & (1 << j)) {
        sta *= -1;
        now -= f[j] + 1;
      }
    }
    if (now >= 0) ans += sta * lucas(now + n - 1, n - 1);
    ans = (ans + mo) % mo;
  }
  cout << ans << endl;
}
