#include <bits/stdc++.h>
using namespace std;
const int N = 22, mod = 1e9 + 7;
int n, inv[N];
long long s, f[N], cnt[1 << N];
int C(int a, int b) {
  if (a < b) return 0;
  b = min(b, a - b);
  long long res = 1;
  for (int i = 0; i < b; i++)
    res = 1ll * res * (a - i) % mod * inv[i + 1] % mod;
  return res;
}
int Lucas(long long a, int b) {
  if (a <= mod && b <= mod) return C(a, b);
  return 1ll * Lucas(a / mod, b / mod) * C(a % mod, b % mod) % mod;
}
int solve(int x) {
  long long sum = s;
  for (int i = 0; i < n; i++)
    if (x & (1 << i)) sum -= f[i] + 1;
  if (sum < 0) return 0;
  return Lucas(sum + n - 1, n - 1);
}
void init() {
  inv[0] = inv[1] = 1;
  for (int i = 2; i <= n; i++)
    inv[i] = 1ll * inv[mod % i] * (mod - mod / i) % mod;
  return;
}
int main() {
  scanf("%d%lld", &n, &s);
  init();
  for (int i = 0; i < n; i++) scanf("%lld", &f[i]);
  int ans = 0;
  for (int i = 0; i < (1 << n); i++) {
    cnt[i] = cnt[i >> 1] + (i & 1);
    ans = (ans + (((cnt[i] & 1) ? -1 : 1) * solve(i) % mod + mod) % mod) % mod;
  }
  printf("%d\n", ans);
  return 0;
}
