#include <bits/stdc++.h>
using namespace std;
int arr[101];
long long int dp[101][100001];
long long int solve(int N, int K) {
  if (K < 0) {
    return 0;
  }
  if (K == 0) {
    return 1;
  }
  if (N == 1) {
    if (K <= arr[0]) {
      return 1;
    } else {
      return 0;
    }
  }
  if (dp[N][K] != -1) {
    return dp[N][K];
  }
  long long int ways =
      solve(N, K - 1) - solve(N - 1, K - 1 - arr[N - 1]) + solve(N - 1, K);
  dp[N][K] = ways;
  return ways % ((long long int)1e9 + 7);
}
int main() {
  int N, K;
  cin >> N >> K;
  memset(dp, -1, sizeof(dp));
  for (int i = 0; i < N; i++) {
    cin >> arr[i];
  }
  cout << solve(N, K);
}
