#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fbo find_by_order
#define ook order_of_key
typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<int> vi;
typedef long double ld;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
typedef set<int>::iterator sit;
typedef map<int,int>::iterator mit;
typedef vector<int>::iterator vit;
int a[300001];
vi st[1200001];
void combine(int id)
{
int l = id*2; int r = (l^1);
st[id].resize(st[l].size()+st[r].size());
merge(st[l].begin(),st[l].end(),st[r].begin(),st[r].end(),st[id].begin());
}
void build(int id, int l, int r)
{
if(r-l<2)
{
st[id].pb(a[l]);
return ;
}
int mid=(l+r)>>1;
build(id*2,l,mid);
build(id*2+1,mid,r);
combine(id);
}
const int LG = 20;
int solve(vi &vec, int v)
{
/*
cout<<"VEC : ";
for(int i = 0; i < vec.size(); i++)
{
cout<<vec[i]<<' ';
}
cout<<'\n';
*/
int l = 0; int r = vec.size() - 1;
int cur = 0;
int ans = 0;
for(int i = LG - 1; i >= 0; i--)
{
if(v&(1<<i))
{
int x = lower_bound(vec.begin()+l, vec.begin()+r+1, cur+(1<<i)) - vec.begin();
if(l<=x-1)
{
r = min(r, x-1);
ans+=(1<<i);
}
else
{
cur+=(1<<i);
}
}
else
{
int x = lower_bound(vec.begin()+l, vec.begin()+r+1, cur+(1<<i)) - vec.begin();
if(r>=x)
{
l = max(x,l);
ans+=(1<<i);
cur+=(1<<i);
}
else
{
}
}
//cerr<<i<<' '<<l<<' '<<r<<' '<<ans<<'\n';
}
return ans;
}
int query(int id, int l, int r, int ql, int qr, int v)
{
if(ql<=l&&r<=qr) return solve(st[id],v);
if(qr<=l||r<=ql) return -1;
int mid = (l+r)>>1;
return max(query(id*2,l,mid,ql,qr,v),query(id*2+1,mid,r,ql,qr,v));
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
int n; cin >> n;
for(int i = 0; i < n; i++) cin>>a[i];
build(1,0,n);
int q; cin >> q;
while(q--)
{
int l, r, x;
cin>>l>>r>>x;
l--; r--;
cout<<query(1,0,n,l,r+1,x)<<'\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiAKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZibyBmaW5kX2J5X29yZGVyCiNkZWZpbmUgb29rIG9yZGVyX29mX2tleQogCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8bGwsbGw+IGlpOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOyAKdHlwZWRlZiB0cmVlPGludCwgbnVsbF90eXBlLCBsZXNzPGludD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+IHBiZHM7CnR5cGVkZWYgc2V0PGludD46Oml0ZXJhdG9yIHNpdDsKdHlwZWRlZiBtYXA8aW50LGludD46Oml0ZXJhdG9yIG1pdDsKdHlwZWRlZiB2ZWN0b3I8aW50Pjo6aXRlcmF0b3Igdml0OwogCmludCBhWzMwMDAwMV07CiAKdmkgc3RbMTIwMDAwMV07CiAKdm9pZCBjb21iaW5lKGludCBpZCkKewoJaW50IGwgPSBpZCoyOyBpbnQgciA9IChsXjEpOwoJc3RbaWRdLnJlc2l6ZShzdFtsXS5zaXplKCkrc3Rbcl0uc2l6ZSgpKTsKCW1lcmdlKHN0W2xdLmJlZ2luKCksc3RbbF0uZW5kKCksc3Rbcl0uYmVnaW4oKSxzdFtyXS5lbmQoKSxzdFtpZF0uYmVnaW4oKSk7Cn0KIAp2b2lkIGJ1aWxkKGludCBpZCwgaW50IGwsIGludCByKQp7CglpZihyLWw8MikKCXsKCQlzdFtpZF0ucGIoYVtsXSk7CgkJcmV0dXJuIDsKCX0KCWludCBtaWQ9KGwrcik+PjE7CglidWlsZChpZCoyLGwsbWlkKTsKCWJ1aWxkKGlkKjIrMSxtaWQscik7Cgljb21iaW5lKGlkKTsKfQogCmNvbnN0IGludCBMRyA9IDIwOwogCmludCBzb2x2ZSh2aSAmdmVjLCBpbnQgdikKewoJLyoKCWNvdXQ8PCJWRUMgOiAiOwoJZm9yKGludCBpID0gMDsgaSA8IHZlYy5zaXplKCk7IGkrKykKCXsKCQljb3V0PDx2ZWNbaV08PCcgJzsKCX0KCWNvdXQ8PCdcbic7CgkqLwoJaW50IGwgPSAwOyBpbnQgciA9IHZlYy5zaXplKCkgLSAxOwoJaW50IGN1ciA9IDA7CglpbnQgYW5zID0gMDsKCWZvcihpbnQgaSA9IExHIC0gMTsgaSA+PSAwOyBpLS0pCgl7CgkJaWYodiYoMTw8aSkpCgkJewoJCQlpbnQgeCA9IGxvd2VyX2JvdW5kKHZlYy5iZWdpbigpK2wsIHZlYy5iZWdpbigpK3IrMSwgY3VyKygxPDxpKSkgLSB2ZWMuYmVnaW4oKTsKCQkJaWYobDw9eC0xKQoJCQl7CgkJCQlyID0gbWluKHIsIHgtMSk7CgkJCQlhbnMrPSgxPDxpKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWN1cis9KDE8PGkpOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCWludCB4ID0gbG93ZXJfYm91bmQodmVjLmJlZ2luKCkrbCwgdmVjLmJlZ2luKCkrcisxLCBjdXIrKDE8PGkpKSAtIHZlYy5iZWdpbigpOwoJCQlpZihyPj14KQoJCQl7CgkJCQlsID0gbWF4KHgsbCk7CgkJCQlhbnMrPSgxPDxpKTsKCQkJCWN1cis9KDE8PGkpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJCgkJCX0KCQl9CgkJLy9jZXJyPDxpPDwnICc8PGw8PCcgJzw8cjw8JyAnPDxhbnM8PCdcbic7Cgl9CglyZXR1cm4gYW5zOwp9CiAKaW50IHF1ZXJ5KGludCBpZCwgaW50IGwsIGludCByLCBpbnQgcWwsIGludCBxciwgaW50IHYpCnsKCWlmKHFsPD1sJiZyPD1xcikgcmV0dXJuIHNvbHZlKHN0W2lkXSx2KTsKCWlmKHFyPD1sfHxyPD1xbCkgcmV0dXJuIC0xOwoJaW50IG1pZCA9IChsK3IpPj4xOwoJcmV0dXJuIG1heChxdWVyeShpZCoyLGwsbWlkLHFsLHFyLHYpLHF1ZXJ5KGlkKjIrMSxtaWQscixxbCxxcix2KSk7Cn0KIAppbnQgbWFpbigpCnsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CglpbnQgbjsgY2luID4+IG47Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSBjaW4+PmFbaV07CglidWlsZCgxLDAsbik7CglpbnQgcTsgY2luID4+IHE7Cgl3aGlsZShxLS0pCgl7CgkJaW50IGwsIHIsIHg7CgkJY2luPj5sPj5yPj54OwoJCWwtLTsgci0tOwoJCWNvdXQ8PHF1ZXJ5KDEsMCxuLGwscisxLHgpPDwnXG4nOwoJfQp9CiA=