//This program finds the maximum XOR of two numbers which are shuffled in its binary form
//e,g if numbers are 5 and 4 with size 3 in binary form
//these will be 101 and 100 XOR is 001 but max can be 111 by shuffling 1st and second as 011 and 100
#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
#include<bitset>
using namespace std;
long long dec2bin(int dec) {
long long rem,i=1,sum=0;
do
{
rem=dec%2;
sum=sum + (i*rem);
dec=dec/2;
i=i*10;
}while(dec>0);
return sum;
}
int main(){
long long n1, n2;
int count;
cin>>count;
for(int i = 1; i <= count; ++i)
{
int maxScore = 0, bits = 0;
long long sum = 0;
string newstr1 = "" , newstr2 = "";
string str1 = "", str2 = "";
cin>>bits>>n1>>n2;
str1 = to_string(dec2bin(n1)); //to binary
str2 = to_string(dec2bin(n2));
newstr1.resize((bits - str1.size()), '0');
newstr1.append(str1);
str1 = newstr1;
newstr2.resize((bits - str2.size()), '0');
newstr2.append(str2);
str2 = newstr2;
//cout<<"str1 and str2 are resp : "<<str1<<" "<<str2<<endl;
size_t str1_0s = std::count(str1.begin(), str1.end(), '0');
size_t str1_1s = std::count(str1.begin(), str1.end(), '1');
size_t str2_0s = std::count(str2.begin(), str2.end(), '0');
size_t str2_1s = std::count(str2.begin(), str2.end(), '1');
maxScore = std::min(str1_0s, str2_1s) + std::min(str1_1s, str2_0s);
for(int i = bits -1 ; i>=bits - maxScore; --i)
sum = sum + pow(2, i);
cout<<sum<<endl;
}
return 0;
}
Ly9UaGlzIHByb2dyYW0gZmluZHMgdGhlIG1heGltdW0gWE9SIG9mIHR3byBudW1iZXJzIHdoaWNoIGFyZSBzaHVmZmxlZCBpbiBpdHMgYmluYXJ5IGZvcm0KLy9lLGcgaWYgbnVtYmVycyBhcmUgNSBhbmQgNCB3aXRoIHNpemUgMyBpbiBiaW5hcnkgZm9ybQovL3RoZXNlIHdpbGwgYmUgMTAxIGFuZCAxMDAgWE9SIGlzIDAwMSBidXQgbWF4IGNhbiBiZSAxMTEgYnkgc2h1ZmZsaW5nIDFzdCBhbmQgc2Vjb25kIGFzIDAxMSBhbmQgMTAwCgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxzdHJpbmc+CiNpbmNsdWRlPGNtYXRoPgojaW5jbHVkZTxiaXRzZXQ+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCgoKbG9uZyBsb25nIGRlYzJiaW4oaW50IGRlYykgewogICAgbG9uZyBsb25nIHJlbSxpPTEsc3VtPTA7CiAgICBkbwogICAgewogICAgICAgIHJlbT1kZWMlMjsKICAgICAgICBzdW09c3VtICsgKGkqcmVtKTsKICAgICAgICBkZWM9ZGVjLzI7CiAgICAgICAgaT1pKjEwOwogICAgfXdoaWxlKGRlYz4wKTsJCiAgICByZXR1cm4gc3VtOwp9CgoKaW50IG1haW4oKXsKCWxvbmcgbG9uZyAgbjEsIG4yOwoJaW50IGNvdW50OwoKCWNpbj4+Y291bnQ7CgkKCWZvcihpbnQgaSA9IDE7IGkgPD0gY291bnQ7ICsraSkKCXsKCQlpbnQgbWF4U2NvcmUgPSAwLCBiaXRzID0gMDsKCQlsb25nIGxvbmcgc3VtID0gMDsKCQlzdHJpbmcgbmV3c3RyMSA9ICIiICwgbmV3c3RyMiA9ICIiOwoJCXN0cmluZyBzdHIxID0gIiIsIHN0cjIgPSAiIjsKCQljaW4+PmJpdHM+Pm4xPj5uMjsKCgkJc3RyMSA9IHRvX3N0cmluZyhkZWMyYmluKG4xKSk7IC8vdG8gYmluYXJ5CgkJc3RyMiA9IHRvX3N0cmluZyhkZWMyYmluKG4yKSk7IAoJCQoKCQluZXdzdHIxLnJlc2l6ZSgoYml0cyAtIHN0cjEuc2l6ZSgpKSwgJzAnKTsKCQluZXdzdHIxLmFwcGVuZChzdHIxKTsKCQlzdHIxID0gbmV3c3RyMTsKCgkJbmV3c3RyMi5yZXNpemUoKGJpdHMgLSBzdHIyLnNpemUoKSksICcwJyk7CgkJbmV3c3RyMi5hcHBlbmQoc3RyMik7CgkJc3RyMiA9IG5ld3N0cjI7CgoKCQkKCQkvL2NvdXQ8PCJzdHIxIGFuZCBzdHIyIGFyZSByZXNwIDogIjw8c3RyMTw8IiAiPDxzdHIyPDxlbmRsOwoKCQlzaXplX3Qgc3RyMV8wcyA9IHN0ZDo6Y291bnQoc3RyMS5iZWdpbigpLCBzdHIxLmVuZCgpLCAnMCcpOwoJCXNpemVfdCBzdHIxXzFzID0gc3RkOjpjb3VudChzdHIxLmJlZ2luKCksIHN0cjEuZW5kKCksICcxJyk7CgoJCXNpemVfdCBzdHIyXzBzID0gc3RkOjpjb3VudChzdHIyLmJlZ2luKCksIHN0cjIuZW5kKCksICcwJyk7CgkJc2l6ZV90IHN0cjJfMXMgPSBzdGQ6OmNvdW50KHN0cjIuYmVnaW4oKSwgc3RyMi5lbmQoKSwgJzEnKTsKCQkKCQltYXhTY29yZSA9IHN0ZDo6bWluKHN0cjFfMHMsIHN0cjJfMXMpICsgc3RkOjptaW4oc3RyMV8xcywgc3RyMl8wcyk7CgkJZm9yKGludCBpID0gYml0cyAtMSA7IGk+PWJpdHMgLSBtYXhTY29yZTsgLS1pKSAKCQkJc3VtID0gc3VtICsgcG93KDIsIGkpOwoJCWNvdXQ8PHN1bTw8ZW5kbDsKCgl9CglyZXR1cm4gMDsKfQoKCQoK