#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7, MM = 1e5 + 5;
int N, k, dp[MM];
void add(int &a, int b) {
  a += b;
  if (a > MOD) a -= MOD;
}
void sub(int &a, int b) {
  a -= b;
  if (a < 0) a += MOD;
}
int main() {
  scanf("%d%d%", &N, &k);
  dp[0] = 1;
  for (int i = 0, a; i < N; i++) {
    scanf("%d", &a);
    vector<int> psa(k + 10);
    for (int j = k; j >= 0; j--) {
      int tmp = dp[j], l = j + 1, r = min(k + 1, j + a + 1);
      if (l <= r) {
        add(psa[l], tmp);
        sub(psa[r], tmp);
      }
    }
    int tmp = 0;
    for (int i = 0; i <= k; i++) {
      add(tmp, psa[i]);
      add(dp[i], tmp);
    }
  }
  printf("%d", dp[k]);
  return 0;
}
