#include<iostream>
using namespace std;


long long int solve(long long int a[],long long int n,long long int k)
{
	long long int i,j;
	long long int mod=1000000007;
	long long int dp[n+2][k+2]={0};

	for(i=0;i<=k;i++)
	{
		dp[1][i]=(i>a[1])? 0 : 1;
	}
	for(i=2;i<=n;i++)
	{
		for(j=0;j<=k;j++)
		{
			if(j==0)
			{
				dp[i][j]=dp[i-1][j];
			}
			else
			{
				dp[i][j]=(mod+dp[i][j-1] +dp[i-1][j]- ((j-a[i]-1)>=0 ? dp[i-1][j-a[i]-1] : 0))%mod;
			}	
		}
	}
	return(dp[n][k]);
}
int main()
{
	long long int n,k,i;
	cin>>n>>k;
	long long int a[n+2];
	for(i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	cout<<solve(a,n,k);
}