#include <iostream>
#include <algorithm>
#include <string>
#include <set>
#include <assert.h>
using namespace std;
long long readInt(long long l,long long r,char endd){
long long x=0;
int cnt=0;
int fi=-1;
bool is_neg=false;
while(true){
char g=getchar();
if(g=='-'){
assert(fi==-1);
is_neg=true;
continue;
}
if('0'<=g && g<='9'){
x*=10;
x+=g-'0';
if(cnt==0){
fi=g-'0';
}
cnt++;
assert(fi!=0 || cnt==1);
assert(fi!=0 || is_neg==false);
assert(!(cnt>19 || ( cnt==19 && fi>1) ));
} else if(g==endd){
assert(cnt>0);
if(is_neg){
x= -x;
}
assert(l<=x && x<=r);
return x;
} else {
assert(false);
}
}
}
string readString(int l,int r,char endd){
string ret="";
int cnt=0;
while(true){
char g=getchar();
assert(g!=-1);
if(g==endd){
break;
}
cnt++;
ret+=g;
}
assert(l<=cnt && cnt<=r);
return ret;
}
long long readIntSp(long long l,long long r){
return readInt(l,r,' ');
}
long long readIntLn(long long l,long long r){
return readInt(l,r,'\n');
}
string readStringLn(int l,int r){
return readString(l,r,'\n');
}
string readStringSp(int l,int r){
return readString(l,r,' ');
}
struct nd{
nd * nxt[2];
int sum;
nd(){
nxt[0]=nxt[1]=NULL;
sum = 0;
}
};
int T;
int n,k,p;
int sm_n = 0;
set<int> g;
int arr[1001001];
nd * tree;
long long bit_weight[35];
pair<long long,long long> A[100100],B[100100];
int ca=0,cb =0 ;
int main(){
T=readIntLn(1,20);
while(T--){
n=readIntSp(1,1000000);
k=readIntSp(1,30);
p=readIntLn(1,1<<k);
tree = new nd();
g.clear();
for(int i=0;i<k;i++){
bit_weight[i]= 0;
}
for(int i=1;i<=n;i++){
if(i==n){
arr[i]=readIntLn(0,(1<<k)-1);
} else {
arr[i]=readIntSp(0,(1<<k)-1);
}
assert(g.count(arr[i])==0);
g.insert(arr[i]);
}
long long inv=0;
for(int i=1;i<=n;i++){
nd * cur = tree;
for(int j=k-1;j>=0;j--){
if(arr[i] & (1<<j)){
if(cur->nxt[0]!=NULL)
bit_weight[j] += cur->nxt[0]->sum;
if(cur->nxt[1] == NULL){
cur->nxt[1] = new nd();
}
cur=cur->nxt[1];
} else {
if(cur->nxt[1]!=NULL){
bit_weight[j] -= cur->nxt[1]->sum;
inv += cur->nxt[1]->sum;
}
if(cur->nxt[0] == NULL){
cur->nxt[0] = new nd();
}
cur=cur->nxt[0];
}
cur ->sum ++ ;
}
}
ca = k/2;
cb = k - k/2;
for(int i=0;i<(1<<ca);i++){
A[i].first = 0;
A[i].second = i;
for(int j=0;j<ca;j++){
if(i & (1<<j)){
A[i].first += bit_weight[j];
}
}
}
for(int i=0;i<(1<<cb);i++){
B[i].first = 0;
B[i].second = i;
for(int j=0;j<cb;j++){
if(i & (1<<j)){
B[i].first += bit_weight[ca+j];
}
}
}
sort(A,A+(1<<ca));
sort(B,B+(1<<cb));
long long l=-1ll<<60,r=1ll<<60;
long long vl=0,vr= 1<<k;
while(r-l>1){
long long m=(r+l)/2;
long long cnt = 0;
int pa = (1<<ca)-1;
for(int i=0;i<(1<<cb);i++){
while(pa>=0 && A[pa].first + B[i].first > m){
pa --;
}
cnt += pa + 1;
}
if(cnt < p){
l = m;
vl = cnt;
} else {
r= m;
vr = cnt;
}
}
long long need = p - vl;
int pa1=(1<<ca),pa2=(1<<ca);
long long sol=0;
for(int i=0;i<(1<<cb);i++){
swap(B[i].first,B[i].second);
}
sort(B,B+(1<<cb));
for(int i=0;i<(1<<cb);i++){
swap(B[i].first,B[i].second);
}
/*for(int i=0;i<(1<<ca);i++){
cout<<A[i].first <<" "<<A[i].second<<endl;
}
cout<<endl;
for(int i=0;i<(1<<cb);i++){
cout<<B[i].first <<" "<<B[i].second<<endl;
}
cout<<endl;*/
for(int i=0;i<(1<<cb);i++){
int l1=-1,r1=1<<ca;
while(r1 - l1 > 1){
int m=(r1+l1)/2;
if(A[m].first + B[i].first > r){
r1=m;
} else {
l1=m;
}
}
int l2=-1,r2=1<<ca;
while(r2 - l2 > 1){
int m=(r2+l2)/2;
if(A[m].first + B[i].first >= r){
r2=m;
} else {
l2=m;
}
}
if(need > r1- r2){
need -= r1 - r2;
} else {
sol = (B[i].second << ca) + A[r2 + need -1].second;
break;
}
}
cout<<sol<<endl;
}
assert(getchar()==-1);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8YXNzZXJ0Lmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKCmxvbmcgbG9uZyByZWFkSW50KGxvbmcgbG9uZyBsLGxvbmcgbG9uZyByLGNoYXIgZW5kZCl7Cglsb25nIGxvbmcgeD0wOwoJaW50IGNudD0wOwoJaW50IGZpPS0xOwoJYm9vbCBpc19uZWc9ZmFsc2U7Cgl3aGlsZSh0cnVlKXsKCQljaGFyIGc9Z2V0Y2hhcigpOwoJCWlmKGc9PSctJyl7CgkJCWFzc2VydChmaT09LTEpOwoJCQlpc19uZWc9dHJ1ZTsKCQkJY29udGludWU7CgkJfQoJCWlmKCcwJzw9ZyAmJiBnPD0nOScpewoJCQl4Kj0xMDsKCQkJeCs9Zy0nMCc7CgkJCWlmKGNudD09MCl7CgkJCQlmaT1nLScwJzsKCQkJfQoJCQljbnQrKzsKCQkJYXNzZXJ0KGZpIT0wIHx8IGNudD09MSk7CgkJCWFzc2VydChmaSE9MCB8fCBpc19uZWc9PWZhbHNlKTsKCQkJCgkJCWFzc2VydCghKGNudD4xOSB8fCAoIGNudD09MTkgJiYgZmk+MSkgKSk7CgkJfSBlbHNlIGlmKGc9PWVuZGQpewoJCQlhc3NlcnQoY250PjApOwoJCQlpZihpc19uZWcpewoJCQkJeD0gLXg7CgkJCX0KCQkJYXNzZXJ0KGw8PXggJiYgeDw9cik7CgkJCXJldHVybiB4OwoJCX0gZWxzZSB7CgkJCWFzc2VydChmYWxzZSk7CgkJfQoJfQp9CnN0cmluZyByZWFkU3RyaW5nKGludCBsLGludCByLGNoYXIgZW5kZCl7CglzdHJpbmcgcmV0PSIiOwoJaW50IGNudD0wOwoJd2hpbGUodHJ1ZSl7CgkJY2hhciBnPWdldGNoYXIoKTsKCQlhc3NlcnQoZyE9LTEpOwoJCWlmKGc9PWVuZGQpewoJCQlicmVhazsKCQl9CgkJY250Kys7CgkJcmV0Kz1nOwoJfQoJYXNzZXJ0KGw8PWNudCAmJiBjbnQ8PXIpOwoJcmV0dXJuIHJldDsKfQpsb25nIGxvbmcgcmVhZEludFNwKGxvbmcgbG9uZyBsLGxvbmcgbG9uZyByKXsKCXJldHVybiByZWFkSW50KGwsciwnICcpOwp9CmxvbmcgbG9uZyByZWFkSW50TG4obG9uZyBsb25nIGwsbG9uZyBsb25nIHIpewoJcmV0dXJuIHJlYWRJbnQobCxyLCdcbicpOwp9CnN0cmluZyByZWFkU3RyaW5nTG4oaW50IGwsaW50IHIpewoJcmV0dXJuIHJlYWRTdHJpbmcobCxyLCdcbicpOwp9CnN0cmluZyByZWFkU3RyaW5nU3AoaW50IGwsaW50IHIpewoJcmV0dXJuIHJlYWRTdHJpbmcobCxyLCcgJyk7Cn0KCgpzdHJ1Y3QgbmR7CgluZCAqIG54dFsyXTsKCWludCBzdW07CgluZCgpewoJCW54dFswXT1ueHRbMV09TlVMTDsKCQlzdW0gPSAwOwoJfQp9OwppbnQgVDsKaW50IG4sayxwOwppbnQgc21fbiA9IDA7CnNldDxpbnQ+IGc7CmludCBhcnJbMTAwMTAwMV07Cm5kICogdHJlZTsKbG9uZyBsb25nIGJpdF93ZWlnaHRbMzVdOwoKcGFpcjxsb25nIGxvbmcsbG9uZyBsb25nPiBBWzEwMDEwMF0sQlsxMDAxMDBdOwppbnQgY2E9MCxjYiA9MCA7CmludCBtYWluKCl7CglUPXJlYWRJbnRMbigxLDIwKTsKCXdoaWxlKFQtLSl7CgkJbj1yZWFkSW50U3AoMSwxMDAwMDAwKTsKCQlrPXJlYWRJbnRTcCgxLDMwKTsKCQlwPXJlYWRJbnRMbigxLDE8PGspOwoJCXRyZWUgPSBuZXcgbmQoKTsKCQlnLmNsZWFyKCk7CgkJZm9yKGludCBpPTA7aTxrO2krKyl7CgkJCWJpdF93ZWlnaHRbaV09IDA7CgkJfQoJCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQkJaWYoaT09bil7CgkJCQlhcnJbaV09cmVhZEludExuKDAsKDE8PGspLTEpOwoJCQl9IGVsc2UgewoJCQkJYXJyW2ldPXJlYWRJbnRTcCgwLCgxPDxrKS0xKTsKCQkJfQoJCQlhc3NlcnQoZy5jb3VudChhcnJbaV0pPT0wKTsKCQkJZy5pbnNlcnQoYXJyW2ldKTsKCQl9CgkJbG9uZyBsb25nIGludj0wOwoJCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQkJbmQgKiBjdXIgPSB0cmVlOwoJCQlmb3IoaW50IGo9ay0xO2o+PTA7ai0tKXsKCQkJCWlmKGFycltpXSAmICgxPDxqKSl7CgkJCQkJaWYoY3VyLT5ueHRbMF0hPU5VTEwpCgkJCQkJCWJpdF93ZWlnaHRbal0gKz0gY3VyLT5ueHRbMF0tPnN1bTsKCQkJCQlpZihjdXItPm54dFsxXSA9PSBOVUxMKXsKCQkJCQkJY3VyLT5ueHRbMV0gPSBuZXcgbmQoKTsKCQkJCQl9CgkJCQkJY3VyPWN1ci0+bnh0WzFdOwoJCQkJfSBlbHNlIHsKCQkJCQlpZihjdXItPm54dFsxXSE9TlVMTCl7CgkJCQkJCWJpdF93ZWlnaHRbal0gLT0gY3VyLT5ueHRbMV0tPnN1bTsKCQkJCQkJaW52ICs9IGN1ci0+bnh0WzFdLT5zdW07CgkJCQkJfQoJCQkJCWlmKGN1ci0+bnh0WzBdID09IE5VTEwpewoJCQkJCQljdXItPm54dFswXSA9IG5ldyBuZCgpOwoJCQkJCX0KCQkJCQljdXI9Y3VyLT5ueHRbMF07CgkJCQl9CgkJCQljdXIgLT5zdW0gKysgOwoJCQl9CgkJfQoJCWNhID0gay8yOwoJCWNiID0gayAtIGsvMjsKCQlmb3IoaW50IGk9MDtpPCgxPDxjYSk7aSsrKXsKCQkJQVtpXS5maXJzdCA9IDA7CgkJCUFbaV0uc2Vjb25kID0gaTsKCQkJZm9yKGludCBqPTA7ajxjYTtqKyspewoJCQkJaWYoaSAmICgxPDxqKSl7CgkJCQkJQVtpXS5maXJzdCArPSBiaXRfd2VpZ2h0W2pdOwoJCQkJfQoJCQl9CgkJfQoJCWZvcihpbnQgaT0wO2k8KDE8PGNiKTtpKyspewoJCQlCW2ldLmZpcnN0ID0gMDsKCQkJQltpXS5zZWNvbmQgPSBpOwoJCQlmb3IoaW50IGo9MDtqPGNiO2orKyl7CgkJCQlpZihpICYgKDE8PGopKXsKCQkJCQlCW2ldLmZpcnN0ICs9IGJpdF93ZWlnaHRbY2Eral07CgkJCQl9CgkJCX0KCQl9CgkJc29ydChBLEErKDE8PGNhKSk7CgkKCQlzb3J0KEIsQisoMTw8Y2IpKTsKCQkKCQlsb25nIGxvbmcgbD0tMWxsPDw2MCxyPTFsbDw8NjA7CgkJbG9uZyBsb25nIHZsPTAsdnI9IDE8PGs7CgkJd2hpbGUoci1sPjEpewoJCQlsb25nIGxvbmcgbT0ocitsKS8yOwoJCQlsb25nIGxvbmcgY250ID0gMDsKCQkJaW50IHBhID0gKDE8PGNhKS0xOwoJCQlmb3IoaW50IGk9MDtpPCgxPDxjYik7aSsrKXsKCQkJCXdoaWxlKHBhPj0wICYmIEFbcGFdLmZpcnN0ICsgQltpXS5maXJzdCA+IG0pewoJCQkJCXBhIC0tOwoJCQkJfQoJCQkJY250ICs9IHBhICsgMTsKCQkJfQoJCQlpZihjbnQgPCBwKXsKCQkJCWwgPSBtOwoJCQkJdmwgPSBjbnQ7CgkJCX0gZWxzZSB7CgkJCQlyPSBtOwoJCQkJdnIgPSBjbnQ7CgkJCX0KCQl9CgkJbG9uZyBsb25nIG5lZWQgPSBwIC0gdmw7CgkJaW50IHBhMT0oMTw8Y2EpLHBhMj0oMTw8Y2EpOwoJCWxvbmcgbG9uZyBzb2w9MDsKCQlmb3IoaW50IGk9MDtpPCgxPDxjYik7aSsrKXsKCQkJc3dhcChCW2ldLmZpcnN0LEJbaV0uc2Vjb25kKTsKCQl9CgkJCgkJc29ydChCLEIrKDE8PGNiKSk7CgkJZm9yKGludCBpPTA7aTwoMTw8Y2IpO2krKyl7CgkJCXN3YXAoQltpXS5maXJzdCxCW2ldLnNlY29uZCk7CgkJfQoJCS8qZm9yKGludCBpPTA7aTwoMTw8Y2EpO2krKyl7CgkJCWNvdXQ8PEFbaV0uZmlyc3QgPDwiICI8PEFbaV0uc2Vjb25kPDxlbmRsOwoJCX0KCQljb3V0PDxlbmRsOwoJCWZvcihpbnQgaT0wO2k8KDE8PGNiKTtpKyspewoJCQljb3V0PDxCW2ldLmZpcnN0IDw8IiAiPDxCW2ldLnNlY29uZDw8ZW5kbDsKCQl9CgkJY291dDw8ZW5kbDsqLwoJCWZvcihpbnQgaT0wO2k8KDE8PGNiKTtpKyspewoJCQlpbnQgbDE9LTEscjE9MTw8Y2E7CgkJCXdoaWxlKHIxIC0gbDEgPiAxKXsKCQkJCWludCBtPShyMStsMSkvMjsKCQkJCWlmKEFbbV0uZmlyc3QgKyBCW2ldLmZpcnN0ID4gcil7CgkJCQkJcjE9bTsKCQkJCX0gZWxzZSB7CgkJCQkJbDE9bTsKCQkJCX0KCQkJfQoJCQlpbnQgbDI9LTEscjI9MTw8Y2E7CgkJCXdoaWxlKHIyIC0gbDIgPiAxKXsKCQkJCWludCBtPShyMitsMikvMjsKCQkJCWlmKEFbbV0uZmlyc3QgKyBCW2ldLmZpcnN0ID49IHIpewoJCQkJCXIyPW07CgkJCQl9IGVsc2UgewoJCQkJCWwyPW07CgkJCQl9CgkJCX0KCQkJaWYobmVlZCA+IHIxLSByMil7CgkJCQluZWVkIC09IHIxIC0gcjI7CgkJCX0gZWxzZSB7CgkJCQlzb2wgPSAoQltpXS5zZWNvbmQgPDwgY2EpICsgQVtyMiArIG5lZWQgLTFdLnNlY29uZDsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCWNvdXQ8PHNvbDw8ZW5kbDsKCX0KCWFzc2VydChnZXRjaGFyKCk9PS0xKTsKfQ==