#include<bits/stdc++.h>
using namespace std;
long long M=1e9+7;
int solve(){
	int n,K,x,y,p,q;
	cin>>n>>K;
	vector<int>A(n);
	for(int i=0;i<n;i++) cin>>A[i];
	long long dp[2][K+1];
	memset(dp,0,sizeof(dp));
	for(int i=0;i<=min(A[0],K);i++) dp[0][i]=1;
  	int p=1;
	for(int i=1;i<n;i++){
		//check 7 dec 16 in diary for solution;
		x=min(A[i],K);
		dp[p][0]=1;
		long long sum=dp[1-p][0];
		for(int k=1;k<=x;k++){
			sum=(sum+dp[1-p][k])%M;
			dp[p][k]=sum;
		}
		for(int k=x+1;k<=K;k++){
			sum=(sum-dp[1-p][k-x-1]+M)%M;
			dp[p][k]=sum;
		}
      	p=1-p;
	}
	return dp[1-p][K];

}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout<<solve()<<"\n";

}