#include <bits/stdc++.h>
using namespace std;
long long invFact[21];
long long s;
long long a[20];
long long mod = 1000000007;
int n;
long long binpow(long long x, long long n) {
  if (n == 0)
    return 1;
  else if (n == 1)
    return x;
  else if (n & 1)
    return (binpow(x, n - 1) * x) % mod;
  else
    return binpow((x * x) % mod, n >> 1) % mod;
}
long long inv(long long x) { return binpow(x, mod - 2); }
long long calcC(long long n, long long k) {
  long long ans = 1;
  for (long long i = n - k + 1; i <= n; i++) ans = (ans * (i % mod)) % mod;
  return (ans * invFact[k]) % mod;
}
bool bit(int mask, int i) { return (mask >> i) & 1; }
int main() {
  ios_base::sync_with_stdio(0);
  invFact[0] = 1;
  for (int i = 1; i <= 20; i++) {
    invFact[i] = (invFact[i - 1] * inv(i)) % mod;
  }
  cin >> n;
  cin >> s;
  for (int i = 0; i < n; i++) cin >> a[i];
  long long ans = 0;
  for (int i = 0; i < (1 << n); i++) {
    int cnt = __builtin_popcount(i);
    long long currS = s;
    for (int j = 0; j < n; j++) {
      if (bit(i, j)) {
        currS -= a[j] + 1;
      }
    }
    if (currS >= 0) {
      if (cnt & 1)
        ans -= calcC(currS + n - 1, n - 1);
      else
        ans += calcC(currS + n - 1, n - 1);
      ans %= mod;
    }
  }
  cout << (ans + mod) % mod;
  return 0;
}
