#include <bits/stdc++.h>
long long k, r, n[40];
long long inv[40];
const long long mod = 1000000007;
long long pow(long long a, long long b) {
  long long ret = 1;
  while (b) {
    if (b & 1) ret = ret * a % mod;
    a = a * a % mod;
    b >>= 1;
  }
  return ret;
}
long long C(long long y, long long x) {
  if (y < 0 || x < 0 || y < x) return 0;
  y %= mod;
  if (y == 0 || x == 0) return 1;
  long long ans = 1;
  for (long long i = 0; i < x; i++) ans = ans * (y - i) % mod;
  for (long long i = 1; i <= x; i++) ans = ans * inv[i] % mod;
  return ans;
}
signed main() {
  inv[1] = 1;
  for (long long i = 2; i < 40; i++)
    inv[i] = inv[mod % i] * (mod - mod / i) % mod;
  std::cin >> k >> r;
  for (long long i = 1; i <= k; i++) std::cin >> n[i];
  long long ans = C(k + r - 1, k - 1);
  for (long long S = 1; S < (1 << k); S++) {
    long long tmp = k + r, num = 0;
    for (long long i = 0; i < k; i++)
      if ((S >> i) & 1) num++, tmp -= n[i + 1];
    tmp -= num + 1;
    if (num % 2)
      ans = (ans - C(tmp, k - 1)) % mod;
    else
      ans = (ans + C(tmp, k - 1)) % mod;
  }
  std::cout << (ans + mod) % mod;
  return 0;
}
