#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e18 + 5;
long long dp[100005], p[100005], n, k, a[105];
long long const mod = 1e9 + 7;
long long add(long long a, long long b) { return (a % mod + b % mod) % mod; }
long long sub(long long a, long long b) {
  return (a % mod - b % mod + mod) % mod;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  for (long long i = 0; i < n; i++) cin >> a[i];
  dp[0] = 1;
  for (long long i = 0; i < n; i++) {
    for (long long used = k; used >= 0; used--) {
      long long qq = dp[used];
      long long L = used + 1;
      long long R = min(a[i], k - used) + used;
      if (L <= R) {
        p[L] = add(p[L], qq);
        if (R + 1 <= k) p[R + 1] = sub(p[R + 1], qq);
      }
    }
    long long pre = 0;
    for (long long i = 0; i <= k; i++) {
      pre = add(pre, p[i]);
      dp[i] = add(dp[i], pre);
    }
  }
  cout << dp[k] % mod;
}
