#include <iostream>
#include<cmath>
#include<map>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
map<int,bool> visit;
map<int,int>subset;
int idx=0;
int main(int argc, char** argv) {
int n;
//cout<<"Enter the number of elements in the array";
cin>>n;
int a[n+1],i;
//cout<<"Enter the array elements : ";
for(i=0;i<n;i++)
{
cin>>a[i];
visit[a[i]]=1;
}
//cout<<"All the subsets are : \n";
int k=0;
//cout<<k<<" : empty "<<endl;;
k=1;
int max = pow(2,n) - 1;
int next,rightbit,nexthigh,y;
for(int i=1;i<=n;i++)
{
k = pow(2,i)-1;
// cout<<i<<" bits set : ";
while(k<=max)
{
subset[idx++]=k;
// cout<<k<<" ";
rightbit = (k&(-k));
nexthigh= rightbit+k;
y= nexthigh + (((nexthigh^k)/rightbit)>>2);
k=y;
}
// cout<<endl;
}
for(i=1;i<=idx;i++)
{
// cout<<"The bit pattern corresponds to : ";
for(int j=0;j<n;j++)
{
if(i&(1<<j))
{
cout<<a[j]<<" ";
}
}
cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLyogcnVuIHRoaXMgcHJvZ3JhbSB1c2luZyB0aGUgY29uc29sZSBwYXVzZXIgb3IgYWRkIHlvdXIgb3duIGdldGNoLCBzeXN0ZW0oInBhdXNlIikgb3IgaW5wdXQgbG9vcCAqLwoKbWFwPGludCxib29sPiB2aXNpdDsKbWFwPGludCxpbnQ+c3Vic2V0OwppbnQgaWR4PTA7CgppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKCWludCBuOwoJLy9jb3V0PDwiRW50ZXIgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYXJyYXkiOwoJY2luPj5uOwoJaW50IGFbbisxXSxpOwoJLy9jb3V0PDwiRW50ZXIgdGhlIGFycmF5IGVsZW1lbnRzIDogIjsKCWZvcihpPTA7aTxuO2krKykKCSB7CgkgCWNpbj4+YVtpXTsKCSAJdmlzaXRbYVtpXV09MTsKCSB9CgkgCgkgLy9jb3V0PDwiQWxsIHRoZSBzdWJzZXRzIGFyZSA6IFxuIjsKCSBpbnQgaz0wOwoJIC8vY291dDw8azw8IiA6IGVtcHR5ICI8PGVuZGw7OwoJIAoJIGs9MTsKCSBpbnQgbWF4ID0gcG93KDIsbikgLSAxOwoJIGludCBuZXh0LHJpZ2h0Yml0LG5leHRoaWdoLHk7CgkgCgkgZm9yKGludCBpPTE7aTw9bjtpKyspCgkgewoJICAgIGsgPSBwb3coMixpKS0xOwoJIC8vCWNvdXQ8PGk8PCIgYml0cyBzZXQgOiAiOwoJIAl3aGlsZShrPD1tYXgpCgkgCXsKCSAJc3Vic2V0W2lkeCsrXT1rOwoJICAgLy8JY291dDw8azw8IiAiOwoJICAgCXJpZ2h0Yml0ID0gKGsmKC1rKSk7CgkgICAJbmV4dGhpZ2g9IHJpZ2h0Yml0K2s7CgkgICAJCgkgICAJeT0gbmV4dGhpZ2ggKyAoKChuZXh0aGlnaF5rKS9yaWdodGJpdCk+PjIpOwoJICAgCQoJICAgCWs9eTsKCSAgIH0KCS8vICAgY291dDw8ZW5kbDsKICAgICB9CgkgCgkgZm9yKGk9MTtpPD1pZHg7aSsrKQoJIHsKCSAvLwljb3V0PDwiVGhlIGJpdCBwYXR0ZXJuIGNvcnJlc3BvbmRzIHRvIDogIjsKCSAJZm9yKGludCBqPTA7ajxuO2orKykKCSAJewoJIAkJaWYoaSYoMTw8aikpCgkgCQl7CgkgCQkJY291dDw8YVtqXTw8IiAiOwoJIAkJfQoJIAl9CgkgCQoJIAljb3V0PDxlbmRsOwoJIH0KCSAKCXJldHVybiAwOwp9