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