//Y. Tấn và phép XOR
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define For(i, a, b) for(int i = a; i <= b; ++i)
#define Forn(i, b, a) for(int i = b; i >= a; --i)
#define endl '\n'
#define fi first
#define se second
const int maxn = 1e6 + 5;
const int lim = (1 << 20) - 1;
int st[maxn * 4], n, q, a[maxn], ans[maxn];
vector<ll> s;
struct Query
{
int l, id;
ll k;
};
vector<Query> qr[maxn];
void update(int id, int l, int r, int pos, int val)
{
if(l > pos || r < pos) return;
if(l == r)
{
st[id] = max(st[id], val);
return;
}
int mid = (r + l) >> 1;
update(id << 1, l, mid, pos, val);
update(id << 1 | 1, mid + 1, r, pos, val);
st[id] = max(st[id << 1], st[id << 1 | 1]);
}
int query(int x, int l)
{
int u = 1, ans = 0;
for(int i = 19; i >= 0; i--)
{
int bit = (x >> i) & 1;
int L = u << 1 | (bit ^ 1);
int R = u << 1 | bit;
if(st[L] >= l)
{
ans |= (1 << i);
u = L;
} else u = R;
}
return ans;
}
signed main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n;
For(i, 1, n) cin >> a[i];
cin >> q;
For(i, 1, q)
{
int l, r, k;
cin >> l >> r >> k;
qr[r].push_back({l, i, k});
}
int l = 1;
For(i, 1, n) if(!qr[i].empty())
{
while(l <= i)
{
update(1, 0, lim, a[l], l);
l++;
}
for(Query it: qr[i]) ans[it.id] = query(it.k, it.l);
}
For(i, 1, q) cout << ans[i] << endl;
return 0;
}
Ly9ZLiBU4bqlbiB2w6AgcGjDqXAgWE9SCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgRm9yKGksIGEsIGIpIGZvcihpbnQgaSA9IGE7IGkgPD0gYjsgKytpKQojZGVmaW5lIEZvcm4oaSwgYiwgYSkgZm9yKGludCBpID0gYjsgaSA+PSBhOyAtLWkpCiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKY29uc3QgaW50IG1heG4gPSAxZTYgKyA1Owpjb25zdCBpbnQgbGltID0gKDEgPDwgMjApIC0gMTsKaW50IHN0W21heG4gKiA0XSwgbiwgcSwgYVttYXhuXSwgYW5zW21heG5dOwp2ZWN0b3I8bGw+IHM7CnN0cnVjdCBRdWVyeQp7CiAgICBpbnQgbCwgaWQ7CiAgICBsbCBrOwp9Owp2ZWN0b3I8UXVlcnk+IHFyW21heG5dOwp2b2lkIHVwZGF0ZShpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHBvcywgaW50IHZhbCkKewogICAgaWYobCA+IHBvcyB8fCByIDwgcG9zKSByZXR1cm47CiAgICBpZihsID09IHIpCiAgICB7CiAgICAgICAgc3RbaWRdID0gbWF4KHN0W2lkXSwgdmFsKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkID0gKHIgKyBsKSA+PiAxOwogICAgdXBkYXRlKGlkIDw8IDEsIGwsIG1pZCwgcG9zLCB2YWwpOwogICAgdXBkYXRlKGlkIDw8IDEgfCAxLCBtaWQgKyAxLCByLCBwb3MsIHZhbCk7CiAgICBzdFtpZF0gPSBtYXgoc3RbaWQgPDwgMV0sIHN0W2lkIDw8IDEgfCAxXSk7Cn0KCmludCBxdWVyeShpbnQgeCwgaW50IGwpCnsKICAgIGludCB1ID0gMSwgYW5zID0gMDsKICAgIGZvcihpbnQgaSA9IDE5OyBpID49IDA7IGktLSkKICAgIHsKICAgICAgICBpbnQgYml0ID0gKHggPj4gaSkgJiAxOwogICAgICAgIGludCBMID0gdSA8PCAxIHwgKGJpdCBeIDEpOwogICAgICAgIGludCBSID0gdSA8PCAxIHwgYml0OwogICAgICAgIGlmKHN0W0xdID49IGwpCiAgICAgICAgewogICAgICAgICAgICBhbnMgfD0gKDEgPDwgaSk7CiAgICAgICAgICAgIHUgPSBMOwogICAgICAgIH0gZWxzZSB1ID0gUjsKICAgIH0KICAgIHJldHVybiBhbnM7Cn0Kc2lnbmVkIG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CiAgICBjaW4gPj4gbjsKICAgIEZvcihpLCAxLCBuKSBjaW4gPj4gYVtpXTsKICAgIGNpbiA+PiBxOwogICAgRm9yKGksIDEsIHEpCiAgICB7CiAgICAgICAgaW50IGwsIHIsIGs7CiAgICAgICAgY2luID4+IGwgPj4gciA+PiBrOwogICAgICAgIHFyW3JdLnB1c2hfYmFjayh7bCwgaSwga30pOwogICAgfQogICAgaW50IGwgPSAxOwogICAgRm9yKGksIDEsIG4pIGlmKCFxcltpXS5lbXB0eSgpKQogICAgewogICAgICAgIHdoaWxlKGwgPD0gaSkKICAgICAgICB7CiAgICAgICAgICAgIHVwZGF0ZSgxLCAwLCBsaW0sIGFbbF0sIGwpOwogICAgICAgICAgICBsKys7CiAgICAgICAgfQogICAgICAgIGZvcihRdWVyeSBpdDogcXJbaV0pIGFuc1tpdC5pZF0gPSBxdWVyeShpdC5rLCBpdC5sKTsKICAgIH0KICAgIEZvcihpLCAxLCBxKSBjb3V0IDw8IGFuc1tpXSA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cgo=