#include <iostream>
using namespace std;
int n, m, ans=0;
int a[27];
bool f[27];
bool dp[27][2007];
int dpans(){
for(int i=0;i<=n;i++)
for(int j=0;j<=2000;j++)
dp[i][j]=0;
for(int i=0;i<=n;i++)
dp[i][0]=1;
int T=0;
for(int i=1;i<=n;i++){
if(!f[i]){
T+=a[i];
for(int j=1;j<=T;j++)
dp[i][j]=(dp[i-1][j-a[i]] || dp[i-1][j]);
}else{
for(int j=1;j<=T;j++)
dp[i][j]=dp[i-1][j];
}
}
int max1=0;
cout<<"选择:";
for(int i=1;i<=n;i++)
if(!f[i])
cout<<a[i]<<" ";
cout<<endl;
for(int i=1;i<=n;i++){
for(int j=0;j<=T;j++)
cout<<dp[i][j]<<" ";
cout<<endl;
}
cout<<"----"<<endl;
for(int j=1;j<=T;j++)
max1+=dp[n][j];
return max1;
}
void dfs(int now, int cnt){
if(now>n){
if(cnt==m)
ans=max(ans, dpans());
return;
}
dfs(now+1, cnt);
f[now]=1;
dfs(now+1, cnt+1);
f[now]=0;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
dfs(1, 0);
cout<<ans<<endl;
return 0;
}
#4 #7 #8 #10 WA