#include <bits/stdc++.h>
using namespace std;
//
void process (void)
{
int q, type;
long long l, r;
//
auto prefix = [](long long n) -> long long
{
int k = n % 4;
//
if (k == 0)
return n;
if (k == 1)
return 1;
if (k == 2)
return n + 1;
return 0;
};
auto even = [](long long n) -> long long
{
int k = n % 8;
//
if (k == 0)
return n;
if (k == 2)
return 2;
if (k == 4)
return n + 2;
return 0;
};
auto odd = [](long long n) -> long long
{
int k = n % 8;
//
if (k == 1)
return n;
if (k == 3)
return 2;
if (k == 5)
return n ^ 2;
return 0;
};
//
for (cin >> q; q--; cout << '\n')
{
cin >> type >> l >> r;
if (type == 1)
cout << (prefix(r) ^ prefix(l - 1));
else if (l % 2 == 0)
cout << (even(r) ^ even(l - 2));
else
cout << (odd(r) ^ odd(l - 2));
}
}
//
signed main (void)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
process();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vCnZvaWQgcHJvY2VzcyAodm9pZCkKewogICAgaW50IHEsIHR5cGU7CiAgICBsb25nIGxvbmcgbCwgcjsKICAgIC8vCiAgICBhdXRvIHByZWZpeCA9IFtdKGxvbmcgbG9uZyBuKSAtPiBsb25nIGxvbmcKICAgIHsKICAgICAgICBpbnQgayA9IG4gJSA0OwogICAgICAgIC8vCiAgICAgICAgaWYgKGsgPT0gMCkKICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgICAgaWYgKGsgPT0gMSkKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgaWYgKGsgPT0gMikKICAgICAgICAgICAgcmV0dXJuIG4gKyAxOwogICAgICAgIHJldHVybiAwOwogICAgfTsKICAgIGF1dG8gZXZlbiA9IFtdKGxvbmcgbG9uZyBuKSAtPiBsb25nIGxvbmcKICAgIHsKICAgICAgICBpbnQgayA9IG4gJSA4OwogICAgICAgIC8vCiAgICAgICAgaWYgKGsgPT0gMCkKICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgICAgaWYgKGsgPT0gMikKICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgaWYgKGsgPT0gNCkKICAgICAgICAgICAgcmV0dXJuIG4gKyAyOwogICAgICAgIHJldHVybiAwOwogICAgfTsKICAgIGF1dG8gb2RkID0gW10obG9uZyBsb25nIG4pIC0+IGxvbmcgbG9uZwogICAgewogICAgICAgIGludCBrID0gbiAlIDg7CiAgICAgICAgLy8KICAgICAgICBpZiAoayA9PSAxKQogICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICBpZiAoayA9PSAzKQogICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICBpZiAoayA9PSA1KQogICAgICAgICAgICByZXR1cm4gbiBeIDI7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgLy8KICAgIGZvciAoY2luID4+IHE7IHEtLTsgY291dCA8PCAnXG4nKQogICAgewogICAgICAgIGNpbiA+PiB0eXBlID4+IGwgPj4gcjsKICAgICAgICBpZiAodHlwZSA9PSAxKQogICAgICAgICAgICBjb3V0IDw8IChwcmVmaXgocikgXiBwcmVmaXgobCAtIDEpKTsKICAgICAgICBlbHNlIGlmIChsICUgMiA9PSAwKQogICAgICAgICAgICBjb3V0IDw8IChldmVuKHIpIF4gZXZlbihsIC0gMikpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgY291dCA8PCAob2RkKHIpIF4gb2RkKGwgLSAyKSk7CiAgICB9Cn0KLy8Kc2lnbmVkIG1haW4gKHZvaWQpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cik7CiAgICBwcm9jZXNzKCk7Cn0K