#include <bits/stdc++.h>
using namespace std;
const long long M = 1e9 + 7;
long long memo[105][100005];
long long arr[100005];
long long solve(long long n, long long k) {
  if (k == 0) return 1;
  if (n < 0) return 0;
  if (memo[n][k] != -1) return memo[n][k];
  long long ret = 0;
  for (int i = 0; i <= min(arr[n], k); i++) {
    ret = (ret % M + solve(n - 1, k - i) % M) % M;
  }
  return memo[n][k] = ret % M;
}
int main() {
  memset(memo, -1, sizeof(memo));
  long long n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
  }
  long long ans = solve(n - 1, k);
  printf("%lld\n", ans);
}
