#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
int arr[25],dp[25][5000];
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(){
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;
}
rt
提交