#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN=30,mod=1e9+7;
int n,f[MAXN+5],s;
int fac[MAXN+5],inv[MAXN+5];
int ans;
int qpow(int a,int b){
int res=1;
while(b){
if(b&1)res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res%mod;
}
void init(){
fac[0]=1;
for(int i=1;i<=MAXN;++i)fac[i]=fac[i-1]*i%mod;
inv[MAXN]=qpow(fac[MAXN],mod-2);
for(int i=MAXN-1;i>=0;i--)inv[i]=inv[i+1]%mod*(i+1)%mod;
}
int C(int a,int b){
if(a<0||b<0||a<b)return 0;
a%=mod;b%=mod;
if(a==0||b==0)return 1;
return 1ll*fac[a]%mod*inv[b]%mod*inv[a-b]%mod;
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0);
init();
cin>>n>>s;
for(int i=1;i<=n;++i)cin>>f[i];
for(int i=0;i<1<<n;++i){
int p=0;
if(i==0)
ans=(ans+C(n+s-1,n-1))%mod;
else {
int t=n+s;
for(int j=0;j<n;++j)if(i>>j&1)++p,t-=f[j+1];
if(p&1)ans=(ans-C(t-p-1,n-1)+mod)%mod;
else ans=(ans+C(t-p-1,n-1))%mod;
}
}
cout<<ans;
return 0;
}