#include <bits/stdc++.h>
using namespace std;
long long n, k;
long long a[109];
long long dp[100009];
long long mod = 1e9 + 7;
void upd(long long x, long long val) {
  ++x;
  while (x <= 1e5 + 5) {
    dp[x] += val;
    dp[x] %= mod;
    x += x & (-x);
  }
}
long long get(long long x) {
  ++x;
  long long ret = 0;
  while (x > 0) {
    ret += dp[x];
    ret %= mod;
    x -= x & (-x);
  }
  return ret;
}
void range(long long x, long long y, long long val) {
  y = min(k, y);
  if (x > y) return;
  upd(x, val);
  upd(y + 1, -val);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n >> k;
  for (int i = 0; i < n; ++i) cin >> a[i];
  range(0, 0, 1);
  for (int i = 0; i < n; ++i)
    for (int j = k; j >= 0; --j) range(j + 1, j + a[i], get(j));
  cout << get(k) << "\n";
}
