#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define mod 1000000007
#define INF  INT_MAX
#define F first
#define S second
#define ld long double
#define ll long long
#define pii pair<int,int>
#define pll pair<ll,ll>
#define vpii vector<pii>
#define rep(i,n) for(i=0;i<n;i++)
#define repr(i,n) for(i=n-1;i>=0;i--)
#define o4(a,b,c,d) cout<<(a)<<" "<<(b)<<" "<<(c)<<" "<<(d)<<endl;
#define initial(arr,val) memset(arr,val,sizeof(arr))
#define value(x) cout << #x << " is " << x << endl;
const int dx[8] = {-1, 0, 0, 1, 1, 1, -1, -1};
const int dy[8] = { 0, -1, 1, 0, -1, 1, -1, 1};
const int N=101,X=1e6+2;
int dp[N+1][X+1];
int c[N+1];
void solve(){
    int n,x;
    cin>>n>>x;
    for(int i=0;i<n;i++)
        cin>>c[i];
    for(int i=0;i<n;i++){
        for(int j=0;j<=x;j++){
                if(j==0)
                dp[i][j]=1;
               else{
                  int op1=(i>=1) ? dp[i-1][j]:0;
                  int op2=(j>=c[i])? dp[i][j-c[i]]:0;
                dp[i][j]=(op1+op2)%mod;

               }
        }

    }
      cout<<dp[n-1][x];


}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int tc = 1;
    //cin >> tc;
    for(int k = 1 ;k <= tc; k++){
       // cout<<"Case #"<<k<<": ";
        solve();

    }
    return 0;
}



