#include <iostream>
using namespace std;
int main()
{
int n,a[50],s,s0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];//输入数组
}
for(s=0;s<(1<<n);s++)//枚举子集个数(0—2^n-1)
{
for(s0=0;s0<n;s0++)//枚举每个子集(个数的二进制)
{
if(s&(1<<s0)) cout<<a[s0]<<" ";//相当于判断(s0+1位是否是1),但第s0+1位数字还是数组中的,即输出a[s0]
}
cout<<endl;
}
return 0;
}
例:输入 3
1 2 3
输出 1
2
12
3
13
23
123