#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, K;
const int M = 1e9+7, ms = 2e5+9;
int dp[ms], a[ms], pre[ms];

void addSelf(int &a, int b){
  a+=b;
  if(a > M){
    a-=M;
  }
}

void subSelf(int &a, int b){
  a-=b;
  if(a < -M){
    a+=M;
  }
}

main(){
  cin >> n >> K;

  for(int i = 0; i < n; i++) cin >> a[i];
  
  dp[0] = 1;
  for(int i = 0; i < n; i++){
    for(int k = K; k>=0; k--){
      int val = dp[k];
      int up = a[i];
      int l = 1 + k;
      int r = min(up, K-k) + k;
      if(l <=r){
        addSelf(pre[l], val);
        subSelf(pre[r+1], val);
      }
    }
    
    int acc = 0;
    for(int i = 0; i <= K; i++){
      addSelf(acc, pre[i]);
      addSelf(dp[i],acc);
      pre[i] = 0;
    }
  }

  cout<<(dp[K])%M;
}