#include<iostream>
#include<algorithm>
using namespace std;
int a[10005];
long long f[1005][10005];
int main()
{
    int n,m;
    cin>>n>>m;
    for (int i=1;i<=n;i++) {cin>>a[i];if (a[i]>m) a[i]=m;}
    for (int i=0;i<=a[1];i++) f[1][i]=1;
    for (int i=2;i<=n;i++)
        for (int j=0;j<=m;j++)
        {
            int t(0);
            for (int k=0;k<=a[i];k++)
                if (j-k>=0) t+=f[i-1][j-k];
            f[i][j]=t%1000007;
        }
    cout<<f[n][m]<<endl;
    return 0;
}

/**************************************************************
	Problem: 2312
	User: admin
	Language: C++
	Result: Accepted
	Time:53 ms
	Memory:80668 kb
****************************************************************/