#include <bits/stdc++.h>
using namespace std;
int n,c,sum=0,flag=0,res=0;
//res剩余数字的和,sum当前总数的和
int a[10001],vis[10001];
bool dfs(int t)
{
if(sum==c)
return true;
if(t>n)
return false;
res-=a[t];
if(sum+a[t]<=c)
{
vis[t]=1;
sum+=a[t];
if(dfs(t+1))
return true;
sum-=a[t];
}
if(sum+res>=c)
{
vis[t]=0;
if(dfs(t+1))
return true;
}
res+=a[t];
return false;
}
int main()
{
cin>>n>>c;
for(int i=0;i<n;i++)
{
cin>>a[i];
res+=a[i];
vis[i]=0;
}
dfs(0);
if(!dfs(0))
cout<<"No Solution!";
else
{
for(int i=0;i<n;i++)
{
if(vis[i])
cout<<a[i]<<" ";
}cout<<endl;
}
return 0;
}
05-18
1111
