#include
#include
#include
#include
using namespace std;
void checkSum(int arr[20], int index, int size, int sum, int key, int out[20], set &print)
{
if(index==size)
{
if(sum==key){
//print the array
string s;
for(int i=0; i<size; i++)
{
if(out[i]!=0)
{
s = s+to_string(out[i])+" ";
}
}
print.insert(s);
}
//as other combinations need to be search
return;
}
//include index element
if(arr[index]<=key && sum+arr[index]<=key)
{
out[index] = arr[index];
checkSum(arr, index+1, size, sum+arr[index], key, out, print);
// if(found){return true;}
//backtrack
out[index] = 0;
}
//exclude index element
checkSum(arr, index+1, size, sum, key, out, print);
}
int main() {
set print;
int num, key;
cin>>num;
int arr[20], out[20]{0};
for(int i=0; i<num; i++)
{
cin>>arr[i];
}
cin>>key;
sort(arr, arr+num);
checkSum(arr, 0, num, 0, key, out, print);
for(auto itr=print.begin(); itr!=print.end(); itr++)
{
cout<<*itr<<endl;
}
return 0;
}
