
#include <iostream>
#include <cstring>
using namespace std;
void dfs(int *a,int *ex, int i, int n,int sum,int k)
{
if(sum>k || i>n)
{
return;
}
if(sum==k && i<=n)
{
cout << "满足:\n";
for(int j=0; j<n; j++)
{
if(ex[j])
{
cout << " " << ex[j] << " ";
}
}
cout << endl;
}
sum += a[i];
ex[i] = a[i];
dfs(a,ex,i+1,n,sum,k);
sum -= a[i];
ex[i] = 0;
dfs(a,ex,i+1,n,sum,k);
}
int main()
{
int n,k;
cin >> n;
int a[n];
for(int i=0; i<n; i++)
{
cin >> a[i];
}
cin >> k;
int ex[n];
memset( ex,0,sizeof(ex) );
dfs(a,ex,0,n,0,k);
return 0;
}