#include <bits/stdc++.h>
using namespace std;
const long long int mod = 1e9 + 7;
const long long int cmod = 998244353;
const long long int N = 4e5 + 5;
const long long int inf = 1e16 + 2;
long long int cache[100][100002], a[100], n, k, vis[100][100002], cnt = 0;
long long int dp(long long int idx, long long int l) {
  if (l < 0) return 0;
  if (idx == n and l == 0) return 1;
  if (idx == n) return 0;
  long long int &ans = cache[idx][l];
  if (vis[idx][l]) return ans;
  vis[idx][l] = 1;
  for (long long int i = 0; i <= a[idx]; i++) {
    ans += dp(idx + 1, l - i);
    ans %= mod;
    cnt++;
    cout << cnt << '\n';
  }
  return ans;
}
void solve(long long int Case) {
  cin >> n >> k;
  for (long long int i = 0; i < n; i++) cin >> a[i];
  cout << dp(0, k) << '\n';
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long int testcase = 1;
  long long int Case = 1;
  while (testcase--) {
    solve(Case++);
  }
  return 0;
}
