#include <bits/stdc++.h>
using namespace std;
const int N = 21;
int n;
long long s, a[N], down = 1, ans;
void exgcd(long long a, long long b, long long &x, long long &y) {
  if (b == 0) {
    x = 1, y = 0;
    return;
  }
  exgcd(b, a % b, y, x);
  y -= a / b * x;
}
long long inv(long long x) {
  long long res, y;
  exgcd(x, 1000000007, res, y);
  return res;
}
long long C(long long u, long long d) {
  if (d < u) return 0;
  long long res = 1;
  for (long long i = d; i > d - u; i--) (res *= i % 1000000007) %= 1000000007;
  return res * down % 1000000007;
}
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> s;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 1; i < n; i++) (down *= i) % 1000000007;
  down = inv(down);
  for (int i = 0; i < (1 << n); i++) {
    long long f = 1, d = s + n - 1, u = n - 1;
    for (int j = 0; j < n; j++)
      if (i & (1 << j)) {
        d -= a[j] + 1;
        f *= -1;
      }
    (ans += f * C(u, d)) %= 1000000007;
  }
  cout << (ans + 1000000007) % 1000000007;
  return 0;
}
