#include
using namespace std;
const int maxn=108, mod = 1000007;
int n, m, a[maxn], f[maxn][maxn]; // n种花总数m盆,a[]每种花最多可摆盆数,f[]存方案数
int main()
{
cin>>n>>m;
memset(f,0,sizeof(f));
f[0][0] = 1; //一盆花也不摆也是一种方案
for(int i=1; i<=n; i++) //n种花
{
cin>>a[i];
for(int j=0; j<=m; j++) //总数m盆花
{
for(int k=0; k<=min(j, a[i]); k++) //这种花摆几盆
{
f[i][j] = (f[i][j] + f[i-1][j-k])%mod; //状态转移方程 每次都要mod,防止溢出
}
}
}
cout<
}