#include<bits/stdc++.h>usingnamespace std;#definelllonglongvoidprint(int i){
int ok =0;if(i &1) ok =1;if(i >>1)print(i >>1);printf("%d", ok);}
ll t, n, m;
ll ans =0;intmain(){
scanf("%lld",&t);while(t--){
ans =0;scanf("%lld%lld",&n,&m);if(m <= n){
if(m < n)puts("0");else{
ans =1;while(n &1){
n >>=1;
ans <<=1;}printf("%lld\n", ans);}}else{
ll mm = m, idx =0;while(mm){
mm >>=1;++idx;}
ans =0;int ok =0;int flag = idx;for(ll i = idx -1; i >=0; i--){
ans <<=1;if((!ok &&(1<< i)& m)&&!((1<< i)& n)) ans |=1;if(!((1<< i)& m)&&((1<< i)& n)) ok =1;if(!((1<< i)& m)&&!((1<< i)& n)) flag = i;}if((ans ^ n)<= m){
ll cnt =(1<< flag);
ans = ans - ans % cnt + cnt;}printf("%lld\n", ans);}}return0;}/*
1000101 n(69)
1010111000 m(696)
1010000000 所构造的ans(640)
1011000101 ans ^ n > m
10000000000000000 n
11111111111111111111 m
11101111111111111111 ans
11110000000000000000 ans+1
11100000000000000000 n ^ (ans + 1)依然小于m
*/