//题目链接SDNU OJ 1385
//异或两个数
//1=1
//1^2=3
//1^2^3=0
//1^2^3^4=4
//~~^5=1
//~~^6=7
//~~^7=0
//~~^8=8
/*
 n%4==1 -> 1
 n%4==2 ->n+1
 n%4==3 -> 0
 n%4==0 -> n
 从1~a -> 结果=sum1
 从1~b -> 结果=sum2
 从a~b -> 结果sum3 = sum1^sum2^a = (a+1 ~ b) ^ a
 */
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#include <sstream>
#include <map>
#include <set>
#include <queue>
using namespace std;
typedef long long  ll;
int main()
{
    int T;
    cin >> T;
    while(T--)
    {
        ll a,b;
        cin >> a >> b;
        ll sum1,sum2;

        if(a%4==1) sum1=1;
        else if(a%4==2) sum1=a+1;
        else if(a%4==3) sum1=0;
        else if(a%4==0) sum1=a;

        if(b%4==1) sum2=1;
        else if(b%4==2) sum2=b+1;
        else if(b%4==3) sum2=0;
        else if(b%4==0) sum2=b;
        ll sum3=sum1^sum2^a;
        cout << sum3 << endl;
    }
    return 0;
}