#include<iostream>
using namespace std;classSubsetSum{private:
int n,*s,*x, m;
bool b =false;public:SubsetSum(int N, int M);voidbacktrack(int k, int sum);voidshowY();voidshowN();~SubsetSum();};
SubsetSum::SubsetSum(int N, int M){
int i, j;
n =N;
m =M;
s =newint[n];for(i =0; i < n; i++)
cin >> s[i];
x =newint[n];}void SubsetSum::backtrack(int k, int sum){if(k >= n){if(sum == m){
b =true;showY();}return;}for(int i =0; i <=1; i++){
x[k]= i;if(sum + s[k]*i <= m)backtrack(k +1, sum + s[k]* i);}}void SubsetSum::showY(){for(int i =0; i < n; i++)if(x[i])
cout << s[i]<<" ";
cout << endl;}void SubsetSum::showN(){if(!b)
cout <<"No Solution"<< endl;}
SubsetSum::~SubsetSum(){delete[] s;delete[] x;}
int main(){
int n, m;
cin >> n >> m;
SubsetSum s(n, m);
s.backtrack(0,0);
s.showN();return0;}