#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
// Функция для вычисления XOR всех элементов до индекса k
int computePrefixXOR(const vector<int>& prefixXOR, long long k) {
if (k == 0) return 0;
if (k > prefixXOR.size()) return prefixXOR.back();
return prefixXOR[k - 1];
}
// Рекурсивная функция с мемоизацией для вычисления a_m
int computeA(long long m, const vector<int>& prefixXOR, unordered_map<long long, int>& memo) {
if (memo.count(m)) return memo[m]; // Если значение уже вычислено, возвращаем его
if (m <= prefixXOR.size()) return prefixXOR[m - 1]; // Если m <= n, возвращаем a_m
long long half = m / 2;
int result = computeA(half, prefixXOR, memo); // Рекурсивно вычисляем a_{m/2}
memo[m] = result; // Сохраняем результат в мемоизацию
return result;
}
int main() {
int t;
cin >> t;
while (t--) {
int n;
long long l, r;
cin >> n >> l >> r;
vector<int> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
// Вычисляем префиксный XOR
vector<int> prefixXOR(n);
prefixXOR[0] = a[0];
for (int i = 1; i < n; ++i) {
prefixXOR[i] = prefixXOR[i - 1] ^ a[i];
}
// Мемоизация для хранения уже вычисленных значений a_m
unordered_map<long long, int> memo;
// Вычисляем a_l
int result = computeA(l, prefixXOR, memo);
// Выводим результат
cout << result << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyDQpNGD0L3QutGG0LjRjyDQtNC70Y8g0LLRi9GH0LjRgdC70LXQvdC40Y8gWE9SINCy0YHQtdGFINGN0LvQtdC80LXQvdGC0L7QsiDQtNC+INC40L3QtNC10LrRgdCwIGsKaW50IGNvbXB1dGVQcmVmaXhYT1IoY29uc3QgdmVjdG9yPGludD4mIHByZWZpeFhPUiwgbG9uZyBsb25nIGspIHsKICAgIGlmIChrID09IDApIHJldHVybiAwOwogICAgaWYgKGsgPiBwcmVmaXhYT1Iuc2l6ZSgpKSByZXR1cm4gcHJlZml4WE9SLmJhY2soKTsKICAgIHJldHVybiBwcmVmaXhYT1JbayAtIDFdOwp9CgovLyDQoNC10LrRg9GA0YHQuNCy0L3QsNGPINGE0YPQvdC60YbQuNGPINGBINC80LXQvNC+0LjQt9Cw0YbQuNC10Lkg0LTQu9GPINCy0YvRh9C40YHQu9C10L3QuNGPIGFfbQppbnQgY29tcHV0ZUEobG9uZyBsb25nIG0sIGNvbnN0IHZlY3RvcjxpbnQ+JiBwcmVmaXhYT1IsIHVub3JkZXJlZF9tYXA8bG9uZyBsb25nLCBpbnQ+JiBtZW1vKSB7CiAgICBpZiAobWVtby5jb3VudChtKSkgcmV0dXJuIG1lbW9bbV07IC8vINCV0YHQu9C4INC30L3QsNGH0LXQvdC40LUg0YPQttC1INCy0YvRh9C40YHQu9C10L3Qviwg0LLQvtC30LLRgNCw0YnQsNC10Lwg0LXQs9C+CiAgICBpZiAobSA8PSBwcmVmaXhYT1Iuc2l6ZSgpKSByZXR1cm4gcHJlZml4WE9SW20gLSAxXTsgLy8g0JXRgdC70LggbSA8PSBuLCDQstC+0LfQstGA0LDRidCw0LXQvCBhX20KICAgIGxvbmcgbG9uZyBoYWxmID0gbSAvIDI7CiAgICBpbnQgcmVzdWx0ID0gY29tcHV0ZUEoaGFsZiwgcHJlZml4WE9SLCBtZW1vKTsgLy8g0KDQtdC60YPRgNGB0LjQstC90L4g0LLRi9GH0LjRgdC70Y/QtdC8IGFfe20vMn0KICAgIG1lbW9bbV0gPSByZXN1bHQ7IC8vINCh0L7RhdGA0LDQvdGP0LXQvCDRgNC10LfRg9C70YzRgtCw0YIg0LIg0LzQtdC80L7QuNC30LDRhtC40Y4KICAgIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkgewogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKCiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgaW50IG47CiAgICAgICAgbG9uZyBsb25nIGwsIHI7CiAgICAgICAgY2luID4+IG4gPj4gbCA+PiByOwoKICAgICAgICB2ZWN0b3I8aW50PiBhKG4pOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgIH0KCiAgICAgICAgLy8g0JLRi9GH0LjRgdC70Y/QtdC8INC/0YDQtdGE0LjQutGB0L3Ri9C5IFhPUgogICAgICAgIHZlY3RvcjxpbnQ+IHByZWZpeFhPUihuKTsKICAgICAgICBwcmVmaXhYT1JbMF0gPSBhWzBdOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgIHByZWZpeFhPUltpXSA9IHByZWZpeFhPUltpIC0gMV0gXiBhW2ldOwogICAgICAgIH0KCiAgICAgICAgLy8g0JzQtdC80L7QuNC30LDRhtC40Y8g0LTQu9GPINGF0YDQsNC90LXQvdC40Y8g0YPQttC1INCy0YvRh9C40YHQu9C10L3QvdGL0YUg0LfQvdCw0YfQtdC90LjQuSBhX20KICAgICAgICB1bm9yZGVyZWRfbWFwPGxvbmcgbG9uZywgaW50PiBtZW1vOwoKICAgICAgICAvLyDQktGL0YfQuNGB0LvRj9C10LwgYV9sCiAgICAgICAgaW50IHJlc3VsdCA9IGNvbXB1dGVBKGwsIHByZWZpeFhPUiwgbWVtbyk7CgogICAgICAgIC8vINCS0YvQstC+0LTQuNC8INGA0LXQt9GD0LvRjNGC0LDRggogICAgICAgIGNvdXQgPDwgcmVzdWx0IDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=