#include <bits/stdc++.h>
using namespace std;
const long long N = 105;
const long long M = 1e5 + 5;
const long long MOD = 1e9 + 7;
long long n, k;
long long a[N];
long long cache[N][M];
long long dp(long long idx, long long k) {
  if (k < 0) return 0;
  if (k == 0) return 1;
  if (idx == n + 1) return k == 0;
  long long &ans = cache[idx][k];
  if (ans != -1) return ans;
  long long mini = min(k, a[idx]);
  ans = dp(idx + 1, k) - dp(idx + 1, k - (mini)-1) + MOD;
  ans %= MOD;
  ans += dp(idx, k - 1);
  ans %= MOD;
  return ans;
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  memset(cache, -1, sizeof(cache));
  cin >> n >> k;
  for (long long i = 1; i <= n; i++) cin >> a[i];
  long long ans = dp(1, k) - dp(1, k - 1) + MOD;
  ans %= MOD;
  cout << ans;
  return 0;
}
