#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
int n;
long long g[22] = {1,         1,         500000004, 166666668, 41666667,
                   808333339, 301388891, 900198419, 487524805, 831947206,
                   283194722, 571199524, 380933296, 490841026, 320774361,
                   821384963, 738836565, 514049213, 639669405, 402087866,
                   120104394};
inline long long com(long long m) {
  long long z = g[n - 1];
  for (long long i = m - n + 2; i <= m; i++) z = z * (i % mod) % mod;
  return z;
}
int main() {
  ios::sync_with_stdio(false);
  long long a[20] = {}, s, z = 0;
  cin >> n >> s;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < (1 << n); i++) {
    long long x = 0, y = 0;
    for (int j = 0; j < n; j++)
      if (i & (1 << j)) x += a[j] + 1, y++;
    if (s - x < 0) continue;
    if (y & 1)
      z -= com(s - x + n - 1);
    else
      z += com(s - x + n - 1);
    if (z < 0) z += mod;
    if (z >= mod) z -= mod;
  }
  cout << z;
}
