#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e16;
const long long MOD = 1e9 + 7;
void chmax(long long &a, long long b) { a = max(a, b); }
void chmin(long long &a, long long b) { a = min(a, b); }
long long aN[100000];
long long dp[110][20010];
int main() {
  int N, K;
  cin >> N >> K;
  for (long long i = (0); i < (N); i++) cin >> aN[i];
  dp[0][0] = 1;
  for (long long i = (0); i < (N); i++) {
    long long sm[K + 2];
    for (long long j = (1); j < (K + 2); j++) {
      sm[j] = sm[j - 1] + dp[i][j - 1];
    }
    for (long long j = (0); j < (K + 1); j++) {
      dp[i + 1][j] = sm[j + 1] - sm[max(j - aN[i], long long(0))];
    }
  }
  cout << dp[N][K] % MOD << endl;
  return 0;
}
