#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
int arr[30],dp[30][15000];
int dfs(int a,int nm){
if(nm>m)return 0;
if(nm==m){
return 1;
}
if(dp[a][nm]!=0)return dp[a][nm];
int ret=0;
for(int i=a;i<=n;i++){
ret+=dfs(i,nm+arr[i]);
}
dp[a][nm]=ret;
return ret;
}
int ans=0;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>arr[i];
sort(arr+1,arr+1+n);
for(int i=1;i<=n;i++){
ans+=dfs(i,arr[i]);
}
cout<<ans;
}
T一个点是故意卡的吗