#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long fm(long long x) {
  int k = mod - 2, ans = 1;
  while (k) {
    if (k & 1) ans = ans * x % mod;
    x = x * x % mod;
    k >>= 1;
  }
  return ans;
}
long long comb(long long a, long long b) {
  if (a < b) return 0;
  if (b > a - b) b = a - b;
  long long s1 = 1, s2 = 1;
  for (int i = 1; i <= b; i++) {
    s2 = (s2 * i) % mod;
    s1 = (s1 * (a - b + i)) % mod;
  }
  return s1 * fm(s2) % mod;
}
long long luca(long long a, long long b) {
  if (a == 0 || b == 0 || a == b) return 1;
  return luca(a / mod, b / mod) * comb(a % mod, b % mod) % mod;
}
int main() {
  int n, num;
  long long s, f[25], sum = 0;
  scanf("%d %lld", &n, &s);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", f + i);
    sum += f[i];
  }
  if (sum < s) {
    printf("0\n");
    return 0;
  }
  if (sum == s) {
    printf("1\n");
    return 0;
  }
  int book;
  long long st;
  long long ans = luca(s + n - 1, n - 1);
  for (int k = 1; k < (1 << n); k++) {
    st = 0;
    num = 0;
    book = 0;
    for (int i = 0; i < n; i++) {
      if ((k >> i) & 1) {
        num++;
        st += f[i + 1] + 1;
        if (st > s) {
          book = 1;
          break;
        }
      }
    }
    if (book) continue;
    if (num % 2 == 0)
      ans = (ans + luca(s + n - 1 - st, n - 1) % mod) % mod;
    else
      ans = (ans + mod - luca(s + n - 1 - st, n - 1) % mod) % mod;
  }
  printf("%lld\n", (ans + mod) % mod);
  return 0;
}
