#include <bits/stdc++.h>
using namespace std;
int combinationalSum(vector<long long>&nums, long long target){
long long dp[target+1] = {0};
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+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGNvbWJpbmF0aW9uYWxTdW0odmVjdG9yPGxvbmcgbG9uZz4mbnVtcywgbG9uZyBsb25nIHRhcmdldCl7CiAgICAgICAgbG9uZyBsb25nIGRwW3RhcmdldCsxXSA9IHswfTsKICAgICAgICBpbnQgbiA9IG51bXMuc2l6ZSgpOwogICAgICAgIGRwWzBdPTE7CiAgICAgICAgZm9yKGxvbmcgbG9uZyBpPTA7IGk8bjsgaSsrKXsKICAgICAgICAgICAgZm9yKGxvbmcgbG9uZyBqPW51bXNbaV07IGo8PXRhcmdldDsgaisrKXsKICAgICAgICAgICAgICAgICBkcFtqXSArPWRwW2otbnVtc1tpXV07IAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgcmV0dXJuIGRwW3RhcmdldF07Cn0KaW50IG1haW4oKSB7Cglsb25nIGxvbmcgbix0YXJnZXQ7CgljaW4+Pm4+PnRhcmdldDsKICAgIHZlY3Rvcjxsb25nIGxvbmc+bnVtcyhuKTsKICAgIGZvcihsb25nIGxvbmcgaT0wO2k8bjtpKyspewoJCWNpbj4+bnVtc1tpXTsKCX0KCWNvdXQ8PGNvbWJpbmF0aW9uYWxTdW0obnVtcyx0YXJnZXQpPDxlbmRsOwogCiAgICByZXR1cm4gMDsKfQ==