#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007LL;
int N, K;
long long A[101];
long long DP[101][10001];
long long reSum[101];
long long dfs(int idx, int cnt) {
  if (DP[idx][cnt] > 0) return DP[idx][cnt];
  if (K - cnt > reSum[idx]) return 0;
  if (idx == N) {
    if (cnt == K)
      return 1;
    else
      return 0;
  }
  long long res = 0;
  for (int i = 0; i < A[idx] + 1; ++i) {
    if (cnt + i <= K) {
      res += dfs(idx + 1, cnt + i);
      res %= MOD;
    }
  }
  DP[idx][cnt] = res;
  return res;
}
int main() {
  cin.sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> N >> K;
  for (int i = 0; i < N; ++i) cin >> A[i];
  for (int i = N - 1; i >= 0; --i) {
    if (i == N - 1) {
      reSum[i] = A[i];
      continue;
    }
    reSum[i] = reSum[i + 1] + A[i];
  }
  long long ans = dfs(0, 0);
  cout << ans << endl;
  return 0;
}
