#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;

// adding interval [k.....k - ar[idx]]
//  for(int i = 0; i <= ar[idx]; ++i) {
//    add(x, rec(idx + 1, k - i));
//  }
  
  add(x, sub(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';
  //~ cerr << dp[n - 1][k] << '\n';
  return 0;
}
