#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=300000+10;
const int mod=1000007;
//直接dp
//dp[i]表示放了多少花
int dp[110];
int a[N];
int m,n;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
//边界,不放也是一种方案
dp[0]=1;
//枚举每一种
for(int i=1;i<=n;i++)
//枚举当一共放了多少
for(int j=m;j>=1;j--)
//枚举当前花放了多少
for(int k=1;k<=a[i]&&j-k>=0;k++)
dp[j]=(dp[j-k]+dp[j])%mod;
cout<<dp[m]<<endl;
}