#include <bits/stdc++.h>
using namespace std;
using Int = long long;
const int mod = 1000000007;
const int nax = 100010;
int n;
int ar[101];
int dp[nax][101];
void add(int &a, int b) {
  a += b;
  if (a >= mod) {
    a -= mod;
  }
}
void sub(int &a, int b) {
  a -= b;
  if (a <= 0) a += mod;
}
int rec(int idx, int k) {
  if (k == 0) {
    return 1;
  }
  if (k < 0 || idx >= n) {
    return 0;
  }
  int &x = dp[k][idx];
  if (x != -1) {
    return x;
  }
  x = 0;
  add(x, rec(idx + 1, k) - rec(idx + 1, k - ar[idx] - 1));
  add(x, rec(idx, k - 1));
  return x;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n;
  int k;
  cin >> k;
  for (int i = 0; i < n; ++i) {
    cin >> ar[i];
  }
  memset(dp, -1, sizeof dp);
  cout << rec(0, k) << '\n';
  return 0;
}
