#include
#include
using namespace std;
int main()
{
// dp[x] --> the number of ways such that we have used x candies till this level
int n, k;
cin >> n >> k;
vector v(n);
for(int i = 0; i < n; i++) {
cin >> v[i];
}
vector dp(k + 1, 0);
dp[0] = 1;
int MOD = 1e9 + 7;
for(int i = 0; i < n; i++) {
vector pref_sum(k + 1, 0);
for(int j = k; j >= 0; j--) {
int L = j + 1;
int R = j + min(v[i], k - j);
if(L <= R) {
pref_sum[L] += dp[j];
pref_sum[L] %= MOD;
if(R + 1 <= k) {
pref_sum[R + 1] -= dp[j];
if(pref_sum[R + 1] < 0) {
pref_sum[R + 1] += MOD;
}
}
}
}
int sum = 0;
for(int c = 0; c <= k; c++) {
sum += pref_sum[c];
sum %= MOD;
dp[c] += sum;
dp[c] %= MOD;
}
}
cout << dp[k] << endl;
return 0;
}