#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const long long linf = 1LL << 60;
const long long mod = 1e9 + 7;
const double eps = 1e-9;
template <class T>
class BIT {
 public:
  int n;
  vector<T> bit;
  BIT() {}
  BIT(int n_) { init(n_); }
  void init(int n_) {
    n = n_;
    bit.resize(n + 1);
    clear();
  }
  T sum(int i) {
    T s = 0;
    while (i > 0) {
      s += bit[i];
      s %= mod;
      i -= i & -i;
    }
    return s;
  }
  void add(int i, T x) {
    while (i <= n) {
      bit[i] += x;
      bit[i] %= mod;
      i += i & -i;
    }
  }
  void clear() {
    for (int i = 0; i < n; i++) {
      bit[i] = 0;
    }
  }
};
int main() {
  int n, k;
  cin >> n >> k;
  vector<int> a(n);
  for (int i = 0; i < (int)(n); i++) cin >> a[i];
  BIT<long long> bit[n + 1];
  for (int i = 0; i < (int)(n + 1); i++) bit[i].init(k + 2);
  bit[0].add(1, 1);
  for (int i = 0; i < (int)(n); i++)
    for (int j = (int)(1); j < (int)(k + 2); j++) {
      bit[i + 1].add(j,
                     (bit[i].sum(j) - bit[i].sum(max(0, j - a[i] - 1))) % mod);
    }
  cout << bit[n].sum(k + 1) - bit[n].sum(k) << endl;
  return 0;
}
