#include <bits/stdc++.h>
using namespace std;
typedef tuple<int, int, int> State;
long long mod = 1e9 + 7;
int n, k;
long long a[1000006];
long long dp[103][100005];
long long solve(int idx, int k) {
  long long ans = 0;
  if (idx == n) {
    if (k > 0)
      return 0;
    else if (k == 0)
      return 1;
  }
  if (dp[idx][k] != -1) {
    return dp[idx][k];
  }
  for (int i = 0; i <= a[idx]; i++) {
    if (k - i >= 0) ans = (ans + solve(idx + 1, k - i)) % mod;
  }
  return dp[idx][k] = (ans % mod);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  memset(dp, -1, sizeof dp);
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> a[i];
  cout << solve(0, k) << endl;
}
