#include<bits/stdc++.h>
using namespace std;
int n,m,a[105],mark[105]={0},ans=0;
void dfs(int step,int flag){
if(step>m)return;
if(step==m){
ans++;
return;
}
for(int i=flag;i<n;i++){
if(mark[i]==0){
mark[i]=1;
dfs(step+a[i],i);
mark[i]=0;
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>a[i];
}
dfs(0,0);
cout<<ans;
return 0;
}
最后一个点TLE