#include <bits/stdc++.h>
using namespace std;
int combinationalSum(vector<long long>&nums, long long target){
long long dp[target+1];
int n = nums.size();
dp[0]=1;
for(long long i=0; i<n; i++){
for(long long j=nums[i]; j<=target; j++){
dp[j] +=dp[j-nums[i]];
}
}
return dp[target];
}
int main() {
long long n,target;
cin>>n>>target;
vector<long long>nums(n);
for(long long i=0;i<n;i++){
cin>>nums[i];
}
cout<<combinationalSum(nums,target)<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgY29tYmluYXRpb25hbFN1bSh2ZWN0b3I8bG9uZyBsb25nPiZudW1zLCBsb25nIGxvbmcgdGFyZ2V0KXsKICAgICAgICBsb25nIGxvbmcgZHBbdGFyZ2V0KzFdOwogICAgICAgIGludCBuID0gbnVtcy5zaXplKCk7CiAgICAgICAgZHBbMF09MTsKICAgICAgICBmb3IobG9uZyBsb25nIGk9MDsgaTxuOyBpKyspewogICAgICAgICAgICBmb3IobG9uZyBsb25nIGo9bnVtc1tpXTsgajw9dGFyZ2V0OyBqKyspewogICAgICAgICAgICAgICAgIGRwW2pdICs9ZHBbai1udW1zW2ldXTsgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICByZXR1cm4gZHBbdGFyZ2V0XTsKfQppbnQgbWFpbigpIHsKCWxvbmcgbG9uZyBuLHRhcmdldDsKCWNpbj4+bj4+dGFyZ2V0OwogICAgdmVjdG9yPGxvbmcgbG9uZz5udW1zKG4pOwogICAgZm9yKGxvbmcgbG9uZyBpPTA7aTxuO2krKyl7CgkJY2luPj5udW1zW2ldOwoJfQoJY291dDw8Y29tYmluYXRpb25hbFN1bShudW1zLHRhcmdldCk8PGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K