#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
vector<long long> A;
long long memo[110][100100];
long long dp(long long a, long long b) {
  if (a < 0 || b < 0) {
    return 0;
  }
  if (memo[a][b] != -1) {
    return memo[a][b];
  }
  if (b == 0) {
    return 1;
  }
  if (a == 0) {
    return 1;
  }
  return memo[a][b] =
             (dp(a, b - 1) + dp(a - 1, b) - dp(a - 1, b - A[a - 1] - 1) + MOD) %
             MOD;
}
int main() {
  int N, K;
  cin >> N >> K;
  for (int i = 0; i < 110; i++) {
    for (int j = 0; j < 100100; j++) {
      memo[i][j] = -1;
    }
  }
  A.resize(N);
  for (int i = 0; i < N; i++) {
    cin >> A[i];
  }
  cout << dp(N, K) << endl;
  return 0;
}
