#include<bits/stdc++.h>
using namespace std;
long long int counter,counter1,sum[70000],input[70000]={0},input1[70000]={0}, head;
void update(long long int x)
{
long long int times=head;long long int i;
if(times==0)
{
sum[0]=x;head=1;return;
}
for(i=0;i<times;i++)
{
sum[head++]=sum[i]+x;
}
return ;
}
bool search(long long int x)
{ long long int i=0;counter1=0;
while (i<head)
{
if(sum[i]==x)
{
counter1++;
if(counter1==counter) return 1;}
i++; }
return 0;
}
int main()
{
long long int t,i,n,count;
scanf("%lld",&t);
while(t--)
{ for(i=0;i<70000;i++)
{
sum[i]=input[i]=input1[i]=0;
}
head=0;
scanf("%lld",&n);
long long int r=(long long)(pow(2,n));
for(i=0;i<r;i++)
scanf("%lld",input1+i);
sort(input1,input1+r);
counter=0;long long int printed=0;
//now find and printf n elements;
if(input1[1]!=0)
{
for(i=0;i<r;i++)
input[i]=input1[i];
}
else
{
long long int zeromark=1;
while(input1[zeromark]==0)
{
zeromark++;
}zeromark--;
for(i=0;i<log(zeromark+1);i++)
{
printf("0 ");printed++;
if(printed==n)break;
}
long long int skipped=0;long long int index=0;
long long skip=zeromark;
for(i=zeromark+1;i<r;i++)
{
if(input1[i]!=input1[i-1])skipped=0;
else if(skipped==skip)
{
input[index++]=input1[i];
}
else skipped++;
}
}
for(i=1;i<r;i++)
{ if(printed==n) break;
if(input[i]==input[i-1]) counter++;
else counter=1;
if(!search(input[i]))
{
printf("%lld ",input[i]);
printed++;
update(input[i]);
}
}
printf("\n");
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApsb25nIGxvbmcgaW50IGNvdW50ZXIsY291bnRlcjEsc3VtWzcwMDAwXSxpbnB1dFs3MDAwMF09ezB9LGlucHV0MVs3MDAwMF09ezB9LCBoZWFkOwp2b2lkIHVwZGF0ZShsb25nIGxvbmcgaW50IHgpCnsKbG9uZyBsb25nIGludCB0aW1lcz1oZWFkO2xvbmcgbG9uZyBpbnQgaTsKaWYodGltZXM9PTApCnsKc3VtWzBdPXg7aGVhZD0xO3JldHVybjsKfQpmb3IoaT0wO2k8dGltZXM7aSsrKQp7CnN1bVtoZWFkKytdPXN1bVtpXSt4Owp9CnJldHVybiA7Cn0KYm9vbCBzZWFyY2gobG9uZyBsb25nIGludCB4KQp7IGxvbmcgbG9uZyBpbnQgaT0wO2NvdW50ZXIxPTA7CndoaWxlIChpPGhlYWQpCnsKaWYoc3VtW2ldPT14KQp7CmNvdW50ZXIxKys7CmlmKGNvdW50ZXIxPT1jb3VudGVyKSByZXR1cm4gMTt9CmkrKzsgfQpyZXR1cm4gMDsKfQppbnQgbWFpbigpCnsKbG9uZyBsb25nIGludCB0LGksbixjb3VudDsKc2NhbmYoIiVsbGQiLCZ0KTsKd2hpbGUodC0tKQp7IGZvcihpPTA7aTw3MDAwMDtpKyspCnsKc3VtW2ldPWlucHV0W2ldPWlucHV0MVtpXT0wOwp9CmhlYWQ9MDsKc2NhbmYoIiVsbGQiLCZuKTsKbG9uZyBsb25nIGludCByPShsb25nIGxvbmcpKHBvdygyLG4pKTsKZm9yKGk9MDtpPHI7aSsrKQpzY2FuZigiJWxsZCIsaW5wdXQxK2kpOwpzb3J0KGlucHV0MSxpbnB1dDErcik7CmNvdW50ZXI9MDtsb25nIGxvbmcgaW50IHByaW50ZWQ9MDsKLy9ub3cgZmluZCBhbmQgcHJpbnRmIG4gZWxlbWVudHM7CmlmKGlucHV0MVsxXSE9MCkKewpmb3IoaT0wO2k8cjtpKyspCmlucHV0W2ldPWlucHV0MVtpXTsKfQplbHNlCnsKbG9uZyBsb25nIGludCB6ZXJvbWFyaz0xOwp3aGlsZShpbnB1dDFbemVyb21hcmtdPT0wKQp7Cnplcm9tYXJrKys7Cn16ZXJvbWFyay0tOwpmb3IoaT0wO2k8bG9nKHplcm9tYXJrKzEpO2krKykKewpwcmludGYoIjAgIik7cHJpbnRlZCsrOwppZihwcmludGVkPT1uKWJyZWFrOwp9CmxvbmcgbG9uZyBpbnQgc2tpcHBlZD0wO2xvbmcgbG9uZyBpbnQgaW5kZXg9MDsKbG9uZyBsb25nIHNraXA9emVyb21hcms7CmZvcihpPXplcm9tYXJrKzE7aTxyO2krKykKewppZihpbnB1dDFbaV0hPWlucHV0MVtpLTFdKXNraXBwZWQ9MDsKZWxzZQlpZihza2lwcGVkPT1za2lwKQp7CmlucHV0W2luZGV4KytdPWlucHV0MVtpXTsKfQplbHNlIHNraXBwZWQrKzsKfQp9CmZvcihpPTE7aTxyO2krKykKeyBpZihwcmludGVkPT1uKSBicmVhazsKaWYoaW5wdXRbaV09PWlucHV0W2ktMV0pIGNvdW50ZXIrKzsKZWxzZSBjb3VudGVyPTE7CmlmKCFzZWFyY2goaW5wdXRbaV0pKQp7CnByaW50ZigiJWxsZCAiLGlucHV0W2ldKTsKcHJpbnRlZCsrOwp1cGRhdGUoaW5wdXRbaV0pOwp9Cn0KcHJpbnRmKCJcbiIpOwp9CnJldHVybiAwOwp9