#include<bits/stdc++.h>
using namespace std;
 
long long int a[100005];
long long int dp[102][100002],m=1e9+7;
void adds(long long& a,long long b){
  a = a+b;
  if(a >= M) a-= M;
  return ;
}
long long int fun(long long int start,long long int end,long long int rem)
{
    if(start == end)
    {
        if(rem == 0)
        return 1;
        else 
        return 0;
    }
    if(rem<0)
    return 0;
 
    if(dp[start][rem]!=-1)
    return dp[start][rem];
 
    long long int ans = 0;
    for(long long int j=0;j<=min(a[start],rem);j++)
    {
        adds(ans,fun(start+1,end,rem-j));
    }
    dp[start][rem] = ans;
    return ans;
}
 
int main()
{
    long long int n,k,i,j,ans=0;
    cin>>n>>k;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<=k;j++)
        {
            dp[i][j] = -1;
        }
    }
    fun(0,n,k);
    cout<<dp[0][k]<<endl;
}