#include<bits/stdc++.h>
using namespace std;

const long long int MOD=1e9+7;

int main(){
  int n,W;
  bool done=false;
  cin>>n>>W;
  while(!done){
    done=true;
    vector<int> w(n);
    for(int i=0;i<n;i++) cin>>w[i];
    sort(w.begin(),w.end(),greater<int>());
    vector<int> sum(n+1);
    sum[n]=0;
    for(int i=0;i<n;i++){
      sum[n-i-1]=sum[n-i]+w[n-i-1];
    }
    vector<vector<long long int>> dp(n+1,vector<long long int>(W+1,0));
    dp[0][0]=1;
    for(int i=1;i<=n;i++){
      for(int j=0;j<=W;j++){
	//cal dp[i][j]
	long long int nonput=dp[i-1][j];
	if(j+sum[i]+w[i-1]<=W){
	  nonput=0;
	}
	long long int put=0;
	if(j-w[i-1]>=0){
	  put=dp[i-1][j-w[i-1]];
	}
	dp[i][j]=nonput+put;
	dp[i][j]%=MOD;
      }
    }
    long long int res=0;
    for(int i=0;i<=W;i++){
      res+=dp[n][i];
      res%=MOD;
    }
    cout<<res<<endl;
  }
  
  return 0;
}