#include <bits/stdc++.h>
using namespace std;
const int INTINF = 1e9;
const long long LLINF = 1e18;
const long long mod = 1e9 + 7;
long long dp[101][int(1e5 + 5)];
bool flag[101][int(1e5 + 5)];
int N, K;
int a[101];
long long cum[int(1e5 + 5)];
void solve() {
  cin >> N >> K;
  for (int i = 1, i_len = (N); i <= i_len; ++i) {
    cin >> a[i];
  }
  dp[0][0] = 1;
  for (int i = 1, i_len = (N); i <= i_len; ++i) {
    cum[0] = 0;
    for (int j = 1, j_len = (K + 1); j <= j_len; ++j) {
      cum[j] = (cum[j - 1] + dp[i - 1][j - 1]) % mod;
      cum[j] %= mod;
    }
    for (int j = 0, j_len = (K + 1); j < j_len; ++j) {
      dp[i][j] += (cum[j + 1] - cum[max(0, j - a[i])]) % mod;
      dp[i][j] %= mod;
    }
  }
  cout << dp[N][K] << endl;
}
int main(int argc, char const *argv[]) {
  cin.tie(0);
  ios::sync_with_stdio(false);
  std::cout << std::fixed << std::setprecision(10);
  solve();
  return 0;
}
