#include <bits/stdc++.h>
using namespace std;
long long int dfs(int i, long long int *arr, long long int k, long long int n,
                  long long int **dp) {
  if (i >= n) {
    if (k == 0) return 1;
    return 0;
  }
  if (k < 0) return 0;
  if (dp[i][k] != -1) return dp[i][k];
  long long int res = 0;
  for (int j = 0; j <= min(arr[i], k); j++) {
    res = ((res) % 1000000007 + dfs(i + 1, arr, k - j, n, dp) % 1000000007) %
          1000000007;
  }
  dp[i][k] = res;
  return res;
}
int main() {
  long long int n, k;
  cin >> n >> k;
  long long int *arr = new long long int[n];
  for (int i = 0; i < n; i++) cin >> arr[i];
  long long int **dp = new long long int *[n];
  for (int i = 0; i < n; i++) {
    dp[i] = new long long int[k + 1];
    for (int j = 0; j <= k; j++) dp[i][j] = -1;
  }
  cout << dfs(0, arr, k, n, dp);
}
