#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,x;
ll dp[10005];
int main(){
cin >> n >> m;
dp[0]=1;
for(int i=1;i<=n;i++){
cin >> x;
for(int j=x;j<=m;j++){
dp[j]+=dp[j-x];
}
}
cout << dp[m] << endl;
return 0;
}
class Solution {
public:
int dp[10005];
int coinChange(vector<int>& coins, int amount) {
memset(dp,0x3f,sizeof(dp));
int n=coins.size();
dp[0]=0;
for(int i=0;i<n;i++){
for(int j=coins[i];j<=amount;j++){
dp[j]=min(dp[j],dp[j-coins[i]]+1);
}
}
return dp[amount]==0x3f3f3f3f?-1:dp[amount];
}
};