#include<bits/stdc++.h>
using namespace std;
int dp[10001][101],a[101],n,m;
int dfs(int k,int i){
if(dp[k][i] != 0){
return dp[k][i];
}
if(dp[k][i] == -1){
return 0;
}
if(i > m){
return 0;
}
if(k > n){
if(i == m){
return 1;
}
return 0;
}
int ret = dfs(k + 1,i) % (int)(1e6 + 7);
for(int j = 1;j <= a[k];j ++){
ret = (ret + dfs(k + 1,i + j)) % (int)(1e6 + 7);
}
if(ret == 0){
dp[k][i] = -1;
}
return dp[k][i] = ret;
}
int main(){
cin >> n >> m;
for(int i = 1;i <= n;i ++){
cin >> a[i];
}
cout << dfs(1,0);
return 0;
}