#include <bits/stdc++.h>
using namespace std;
long long modPow(long long n, long long k, long long mod) {
  if (!k) return 1LL;
  long long aux = modPow(n, k / 2, mod);
  aux = (aux * aux) % mod;
  return (k & 1) ? (aux * n) % mod : aux;
}
long long inverso(long long n, long long mod) {
  return modPow(n, mod - 2, mod);
}
long long inv_fat[21];
void pre() {
  inv_fat[0] = 1LL;
  for (int i = 1; i <= 20; i++) {
    inv_fat[i] = (inv_fat[i - 1] * inverso(i, 1000000007)) % 1000000007;
  }
}
long long C(long long n, long long k) {
  if (n < k) return 0LL;
  if (n == k) return 1LL;
  long long ans = inv_fat[k];
  for (long long i = n; i > n - k; i--) {
    ans = (ans * (i % 1000000007)) % 1000000007;
  }
  return ans;
}
int main() {
  int n;
  long long s;
  scanf("%d %lld", &n, &s);
  long long f[20];
  for (int i = 0; i < n; i++) {
    scanf("%lld", &f[i]);
  }
  pre();
  long long ans = 0;
  for (int i = 0; i < (1 << n); i++) {
    long long restricao = 0;
    long long sinal = 1;
    for (int j = 0; j < n; j++) {
      if (i & (1 << j)) {
        restricao += f[j] + 1;
        sinal *= -1;
      }
    }
    ans = (ans + sinal * C(s + n - 1 - restricao, n - 1)) % 1000000007;
  }
  printf("%lld\n", (ans + 1000000007) % 1000000007);
}
