#include<cstdio>
#define maxn 100050
#define HR 1000000007
using namespace std;
int s[maxn],dp[maxn];
int main(){
	int n,k;
	scanf("%d%d",&n,&k);
	s[0]=dp[0]=1;
	for (int i=1;i<=n;i++){
		int x;
		scanf("%d",&x);
		for (int j=1;j<=k;j++)
		s[j]=(s[j-1]+dp[j])%HR;
		for (int j=1;j<=k;j++)
		if (j-x>0) dp[j]=(s[j]-s[j-x-1]+HR)%HR;else
			dp[j]=s[j];
	}
	printf("%d\n",dp[k]);
	return 0;
}

/*
dp[i][j]表示前i个人 一共分了j个的方案数
dp[i][j]=dp[i-1][j-k] (0<=k<=a[i]) 
前缀和优化 
*/