#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
long long dp[100][100001];
int a[100000];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout << setprecision(10) << fixed;
  int N, K;
  cin >> N >> K;
  for (int i = 0; i < N; i++) cin >> a[i];
  for (int i = 0; i <= a[0]; i++) dp[0][i] = 1;
  for (int i = 1; i < N; i++) {
    long long tmp = 0;
    int l = 0;
    for (int j = 0; j <= K; j++) {
      if (l < max(0, j - a[i])) {
        l++;
        tmp -= dp[i - 1][l];
      }
      tmp += dp[i - 1][j];
      tmp %= MOD;
      dp[i][j] = tmp;
    }
  }
  cout << dp[N - 1][K] << endl;
}
