#include <bits/stdc++.h>
using namespace std;
const long long p = 1e9 + 7;
long long f[25];
long long qpow(long long x, long long k, long long p) {
  long long re = 1;
  while (k) {
    if (k & 1) re = re * x % p;
    k >>= 1;
    x = x * x % p;
  }
  return re;
}
long long get_c(long long n, long long m, long long p) {
  if (n < m) return 0;
  if (m > n - m) m = n - m;
  long long i, s1 = 1, s2 = 1;
  for (i = 0; i < m; i++) {
    s1 = s1 * (n - i) % p;
    s2 = s2 * (i + 1) % p;
  }
  return s1 * qpow(s2, p - 2, p) % p;
}
long long lucas(long long n, long long m, long long p) {
  if (m == 0) return 1;
  return lucas(n / p, m / p, p) * get_c(n % p, m % p, p) % p;
}
long long solve(long long n, long long s, long long p) {
  long long i, j, ans = 0, sign, sum;
  for (i = 0; i < (1 << n); i++) {
    sign = 1;
    sum = s;
    for (j = 0; j < n; j++)
      if ((i >> j) & 1) {
        sum = sum - f[j] - 1;
        sign *= -1;
      }
    if (sum < 0) continue;
    ans += sign * lucas(sum + n - 1, n - 1, p);
    ans = ans % p;
  }
  return (ans + p) % p;
}
int main() {
  long long i, n, s;
  scanf("%lld%lld", &n, &s);
  for (i = 0; i < n; i++) scanf("%lld", &f[i]);
  printf("%lld\n", solve(n, s, p));
  return 0;
}
