#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 ****************************************************************/