#include<bits/stdc++.h>
using namespace std;
#define vi vector<int>
vi arr,dp;
int m=1e9+7,o=1e9+6,n,s;
int solve(int s)
{
if (s==0) return 1;
if (s<0) return 0;
if (dp[s]!=-1) return dp[s];
int ans=0;
for (int i=0;i<n;i++){
ans=(ans+solve(s-arr[i]))%m;
}
return dp[s]=ans;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int t=1;
//cin>>t;
while(t--){
cin>>n>>s;
arr.resize(n);
dp.resize(s+1);
for (int i=0;i<=s;i++) dp[i]=-1;
for (int i=0;i<n;i++) cin>>arr[i];
cout<<solve(s);
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSB2aSB2ZWN0b3I8aW50Pgp2aSBhcnIsZHA7CmludCBtPTFlOSs3LG89MWU5KzYsbixzOwppbnQgc29sdmUoaW50IHMpCnsKICAgIGlmIChzPT0wKSByZXR1cm4gMTsKICAgIGlmIChzPDApIHJldHVybiAwOwogICAgaWYgKGRwW3NdIT0tMSkgcmV0dXJuIGRwW3NdOwogICAgaW50IGFucz0wOwogICAgZm9yIChpbnQgaT0wO2k8bjtpKyspewogICAgICAgIGFucz0oYW5zK3NvbHZlKHMtYXJyW2ldKSklbTsKICAgIH0KICAgIHJldHVybiBkcFtzXT1hbnM7Cn0KaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBjb3V0LnRpZShOVUxMKTsKICAgIGludCB0PTE7CiAgICAvL2Npbj4+dDsKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgY2luPj5uPj5zOwogICAgICAgIGFyci5yZXNpemUobik7CiAgICAgICAgZHAucmVzaXplKHMrMSk7CiAgICAgICAgZm9yIChpbnQgaT0wO2k8PXM7aSsrKSBkcFtpXT0tMTsKICAgICAgICBmb3IgKGludCBpPTA7aTxuO2krKykgY2luPj5hcnJbaV07CiAgICAgICAgY291dDw8c29sdmUocyk7CiAgICB9Cn0=