#include <bits/stdc++.h>
using namespace std;
int dp[101][100001];
long long int fn(long long int arr[], long long int i, long long int n,
                 long long int k) {
  if (k == 0) {
    return 1;
  }
  if (i >= n) {
    return 0;
  }
  if (dp[i][k] != -1) {
    return dp[i][k];
  }
  long long int cnt = 0;
  for (long long int j = 0; j <= arr[i]; j++) {
    if (j <= k) {
      long long int z = fn(arr, i + 1, n, k - j);
      cnt = (cnt % 100000007 + z % 100000007) % 100000007;
    }
  }
  return dp[i][k] = (cnt) % 100000007;
}
int32_t main() {
  long long int n, k;
  cin >> n >> k;
  long long int arr[n + 1];
  for (long long int i = 0; i < n; i++) {
    cin >> arr[i];
  }
  memset(dp, -1, sizeof(dp));
  cout << fn(arr, 0, n, k);
}
