#include <bits/stdc++.h>
using namespace std;
int n, k;
int a[3005];
int memo[3005][3005];
bool vis[3005][3005];
int mod(int l) { return l % 1000000007; }
int dp(int pos, int k) {
  if (pos == n) {
    if (k == 0)
      return 1;
    else
      return 0;
  }
  if (vis[pos][k]) return memo[pos][k];
  int ans = 0;
  for (int i = 0; i <= a[pos]; i++) {
    if (k >= i) {
      ans += mod(dp(pos + 1, k - i));
    }
  }
  vis[pos][k] = true;
  return memo[pos][k] = ans;
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  cout << dp(0, k) << endl;
  return 0;
}
