#include <bits/stdc++.h>
using namespace std;
const int maxn = 25;
long long n;
long long a[maxn];
long long s;
long long mod = 1000 * 1000 * 1000 + 7;
long long ansall;
long long pw(long long a, long long b) {
  long long ans = 1;
  for (int i = 31; i >= 0; i--) {
    ans *= ans;
    ans %= mod;
    if ((b >> i) & 1) ans *= a;
    ans %= mod;
  }
  return ans;
}
long long ent(long long a, long long b) {
  if (a == 0) return 1;
  if (a > b) return 0;
  long long ans = 1;
  for (int i = 0; i < a; i++) {
    long long d = b - i;
    d %= mod;
    ans *= d;
    ans %= mod;
  }
  long long makhraj = 1;
  for (int i = 2; i <= a; i++) {
    makhraj *= i;
    makhraj %= mod;
  }
  ans *= (pw(makhraj, mod - 2));
  ans %= mod;
  return ans;
}
int main() {
  cin >> n >> s;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < (1 << n); i++) {
    long long d = 0;
    long long sum = 0;
    for (int j = 0; j < n; j++) {
      if ((i >> j) & 1) {
        sum += (a[j] + 1);
        d++;
      }
    }
    if (sum > s) continue;
    long long s2 = s;
    s2 -= sum;
    if (d % 2 == 1) {
      ansall -= ent(n - 1, s2 + n - 1);
      if (ansall < 0) ansall += mod;
      ansall %= mod;
    } else {
      ansall += ent(n - 1, s2 + n - 1);
      ansall %= mod;
    }
  }
  cout << ansall << endl;
  return 0;
}
