#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <array>
using namespace std;
typedef long long ll;
#define SZ(a) (int)(a).size()
const int maxp = 20;
struct Trie {
vector<array<int,2>> t;
Trie() {
t.assign(1, {-1, -1});
}
int query(int x) {
int ret = 0;
int d = 0;
for (int i = maxp-1; i >= 0; i--) {
ret <<= 1;
int b = x>>i & 1;
if (t[d][b ^ 1] == -1) {
d = t[d][b];
}
else {
d = t[d][b ^ 1];
ret++;
}
}
return ret;
}
void insert(int x) {
int d = 0;
for (int i = maxp-1; i >= 0; i--) {
int b = x>>i & 1;
if (t[d][b] == -1) {
t[d][b] = SZ(t);
t.push_back({-1, -1});
}
d = t[d][b];
}
}
};
struct Sg {
int n;
vector<Trie> t;
Sg(int n) : n(n) {
t.resize(2*n);
}
int query(int l, int r, int x) {
int ret = 0;
for (l += n, r += n; l < r; l >>= 1, r >>= 1) {
if (l & 1) ret = max(ret, t[l++].query(x));
if (r & 1) ret = max(ret, t[--r].query(x));
}
return ret;
}
void insert(int i, int x) {
for (i += n; i > 0; i >>= 1) {
t[i].insert(x);
}
}
};
int main() {
cin.sync_with_stdio(false);
int n;
cin >> n;
Sg sg(n);
for (int i = 0; i < n; i++) {
int x;
cin >> x;
sg.insert(i, x);
}
int nq;
cin >> nq;
for (int iq = 0; iq < nq; iq++) {
int l, r, x;
cin >> l >> r >> x;
l--;
auto ans = sg.query(l, r, x);
printf("%d\n", ans);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YXJyYXk+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwojZGVmaW5lIFNaKGEpIChpbnQpKGEpLnNpemUoKQogCmNvbnN0IGludCBtYXhwID0gMjA7CiAKc3RydWN0IFRyaWUgewoJdmVjdG9yPGFycmF5PGludCwyPj4gdDsKCVRyaWUoKSB7CgkJdC5hc3NpZ24oMSwgey0xLCAtMX0pOwoJfQoJaW50IHF1ZXJ5KGludCB4KSB7CgkJaW50IHJldCA9IDA7CgkJaW50IGQgPSAwOwoJCWZvciAoaW50IGkgPSBtYXhwLTE7IGkgPj0gMDsgaS0tKSB7CgkJCXJldCA8PD0gMTsKCQkJaW50IGIgPSB4Pj5pICYgMTsKCQkJaWYgKHRbZF1bYiBeIDFdID09IC0xKSB7CgkJCQlkID0gdFtkXVtiXTsKCQkJfQoJCQllbHNlIHsKCQkJCWQgPSB0W2RdW2IgXiAxXTsKCQkJCXJldCsrOwoJCQl9CgkJfQoJCXJldHVybiByZXQ7Cgl9Cgl2b2lkIGluc2VydChpbnQgeCkgewoJCWludCBkID0gMDsKCQlmb3IgKGludCBpID0gbWF4cC0xOyBpID49IDA7IGktLSkgewoJCQlpbnQgYiA9IHg+PmkgJiAxOwoJCQlpZiAodFtkXVtiXSA9PSAtMSkgewoJCQkJdFtkXVtiXSA9IFNaKHQpOwoJCQkJdC5wdXNoX2JhY2soey0xLCAtMX0pOwoJCQl9CgkJCWQgPSB0W2RdW2JdOwoJCX0KCX0KfTsKIApzdHJ1Y3QgU2cgewoJaW50IG47Cgl2ZWN0b3I8VHJpZT4gdDsKCVNnKGludCBuKSA6IG4obikgewoJCXQucmVzaXplKDIqbik7Cgl9CglpbnQgcXVlcnkoaW50IGwsIGludCByLCBpbnQgeCkgewoJCWludCByZXQgPSAwOwoJCWZvciAobCArPSBuLCByICs9IG47IGwgPCByOyBsID4+PSAxLCByID4+PSAxKSB7CgkJCWlmIChsICYgMSkgcmV0ID0gbWF4KHJldCwgdFtsKytdLnF1ZXJ5KHgpKTsKCQkJaWYgKHIgJiAxKSByZXQgPSBtYXgocmV0LCB0Wy0tcl0ucXVlcnkoeCkpOwoJCX0KCQlyZXR1cm4gcmV0OwoJfQoJdm9pZCBpbnNlcnQoaW50IGksIGludCB4KSB7CgkJZm9yIChpICs9IG47IGkgPiAwOyBpID4+PSAxKSB7CgkJCXRbaV0uaW5zZXJ0KHgpOwoJCX0KCX0KfTsKIAogCmludCBtYWluKCkgewoJY2luLnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CglpbnQgbjsKCWNpbiA+PiBuOwoJU2cgc2cobik7Cglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewoJCWludCB4OwoJCWNpbiA+PiB4OwoJCXNnLmluc2VydChpLCB4KTsKCX0KCWludCBucTsKCWNpbiA+PiBucTsKCWZvciAoaW50IGlxID0gMDsgaXEgPCBucTsgaXErKykgewoJCWludCBsLCByLCB4OwoJCWNpbiA+PiBsID4+IHIgPj4geDsKCQlsLS07CgkJYXV0byBhbnMgPSBzZy5xdWVyeShsLCByLCB4KTsKCQlwcmludGYoIiVkXG4iLCBhbnMpOwoJfQoJcmV0dXJuIDA7Cn0KIA==