#include<bits/stdc++.h>
using namespace std;
const int m=1e9+7;
#define ll long long
ll p(ll a,ll b=m-2){
ll r=1;
while(b){
if(b&1)r=r*a%m;
a=a*a%m;
b>>=1;
}
return r;
}
ll C(ll n,int k,vector<ll>&invf){
if(n<k)return 0;
ll r=1;
for(int i=1;i<=k;i++){
ll t=(n-k+i)%m;
if(t<0)t+=m;
r=r*t%m;
}
return r*invf[k]%m;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n;
ll k;
cin>>n>>k;
vector<ll>a(n);
for(int i=0;i<n;i++)cin>>a[i];
vector<ll>f(n+1,1),invf(n+1,1);
for(int i=1;i<=n;i++)f[i]=f[i-1]*i%m;
invf[n]=p(f[n]);
for(int i=n;i>=1;i--)invf[i-1]=invf[i]*i%m;
ll res=0;
long long ans = 1;
for(int s = 9; s <= k; s+= 9){
for(int mask=0;mask<(1<<n);mask++){
ll sum=0;
int b=__builtin_popcount(mask);
for(int i=0;i<n;i++)if(mask&(1<<i)){
sum+=a[i]+1;
if(sum>s+n)break;
}
ll r=s-sum;
if(r<0)continue;
ll w=C(r+n-1,n - 1,invf);
if(b&1)res=(res-w)%m;
else res=(res+w)%m;
}
if(res<0)res+=m;
ans = (ans + res) % m;
}
cout << ans;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IG09MWU5Kzc7CiNkZWZpbmUgbGwgbG9uZyBsb25nCmxsIHAobGwgYSxsbCBiPW0tMil7CglsbCByPTE7Cgl3aGlsZShiKXsKCQlpZihiJjEpcj1yKmElbTsKCQlhPWEqYSVtOwoJCWI+Pj0xOwoJfQoJcmV0dXJuIHI7Cn0KbGwgQyhsbCBuLGludCBrLHZlY3RvcjxsbD4maW52Zil7CglpZihuPGspcmV0dXJuIDA7CglsbCByPTE7Cglmb3IoaW50IGk9MTtpPD1rO2krKyl7CgkJbGwgdD0obi1rK2kpJW07CgkJaWYodDwwKXQrPW07CgkJcj1yKnQlbTsKCX0KCXJldHVybiByKmludmZba10lbTsKfQppbnQgbWFpbigpewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CgljaW4udGllKDApOwoJaW50IG47CglsbCBrOwoJY2luPj5uPj5rOwoJdmVjdG9yPGxsPmEobik7Cglmb3IoaW50IGk9MDtpPG47aSsrKWNpbj4+YVtpXTsKCXZlY3RvcjxsbD5mKG4rMSwxKSxpbnZmKG4rMSwxKTsKCWZvcihpbnQgaT0xO2k8PW47aSsrKWZbaV09ZltpLTFdKmklbTsKCWludmZbbl09cChmW25dKTsKCWZvcihpbnQgaT1uO2k+PTE7aS0tKWludmZbaS0xXT1pbnZmW2ldKmklbTsKCglsbCByZXM9MDsKCWxvbmcgbG9uZyBhbnMgPSAxOwoJZm9yKGludCBzID0gOTsgcyA8PSBrOyBzKz0gOSl7Cglmb3IoaW50IG1hc2s9MDttYXNrPCgxPDxuKTttYXNrKyspewoJCWxsIHN1bT0wOwoJCWludCBiPV9fYnVpbHRpbl9wb3Bjb3VudChtYXNrKTsKCQlmb3IoaW50IGk9MDtpPG47aSsrKWlmKG1hc2smKDE8PGkpKXsKCQkJc3VtKz1hW2ldKzE7CgkJCWlmKHN1bT5zK24pYnJlYWs7CgkJfQoJCWxsIHI9cy1zdW07CgkJaWYocjwwKWNvbnRpbnVlOwoJCWxsIHc9QyhyK24tMSxuIC0gMSxpbnZmKTsKCQlpZihiJjEpcmVzPShyZXMtdyklbTsKCQllbHNlIHJlcz0ocmVzK3cpJW07Cgl9CglpZihyZXM8MClyZXMrPW07CglhbnMgPSAoYW5zICsgcmVzKSAlIG07Cgl9Cgljb3V0IDw8IGFuczsKCXJldHVybiAwOwp9