#include <bits/stdc++.h>
using namespace std;
const int mod = 1000007;
int n,m,a[105],f[10005][105],cnt;
int main (){
scanf ("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf ("%d",&a[i]);
}
for(int i=0;i<=n;i++){
f[i][0] = 1;
}
for(int i=1;i<=n;i++){
for(int j=m;j>=1;j--){
for(int k = 0;k <= min(j,a[i]);k++){
f[i][j] = (f[i][j]+f[i-1][j-k]) %mod;
}
}
}
printf ("%d\n",f[n][m]%mod);
return 0;
}
第二层j的循环里面为什么到1停止,蒟蒻不太明白0和1 的区别