#include <bits/stdc++.h>
using namespace std;
const int mod = (int)(1e9 + 7);
inline void add(int &a, int b) {
  a += b;
  if (a >= mod) {
    a -= mod;
  }
}
vector<vector<int>> dp;
int solve(int idx, vector<int> &arr, int k, int n) {
  if (idx == n && k == 0) return 1;
  if (idx == n) return 0;
  if (dp[idx][k] != -1) return dp[idx][k];
  int ans = 0;
  for (int amt = 0; amt <= arr[idx]; amt++) {
    if (amt <= k) {
      int ret = solve(idx + 1, arr, k - amt, n);
      add(ans, ret);
    }
  }
  return dp[idx][k] = ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  vector<int> arr(n);
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
  }
  dp.clear();
  dp.resize(n);
  for (int i = 0; i < n; i++) {
    dp[i].resize(k + 1);
    fill(dp[i].begin(), dp[i].end(), -1);
  }
  int ans = solve(0, arr, k, n);
  cout << ans << '\n';
  return 0;
}
