#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 1e5 + 5;
int n, q;
ii h[N];
struct PersistentSegTree {
struct Data {
int mx_seg = 0;
int mx_pref = 0, mx_suf = 0;
int len = 0;
Data() {}
Data(int c) {
len = 1;
if (c == 1) mx_seg = mx_pref = mx_suf = 1;
}
Data operator+(const Data& other) const {
Data res;
res.mx_seg = max({mx_seg, other.mx_seg, mx_suf + other.mx_pref});
res.mx_pref = mx_pref + (mx_pref == len ? other.mx_pref : 0);
res.mx_suf = other.mx_suf + (other.mx_suf == other.len ? mx_suf : 0);
res.len = len + other.len;
return res;
}
};
struct Node {
int l = 0, r = 0;
Data info;
};
int n;
vector<Node> seg;
PersistentSegTree() {}
PersistentSegTree(int n) : n(n) {}
int build(int l, int r) {
int cur = seg.size();
seg.push_back(Node());
if (l == r) {
seg[cur].info = Data(0);
return cur;
}
int mid = (l + r) >> 1;
seg[cur].l = build(l, mid);
seg[cur].r = build(mid + 1, r);
int lc = seg[cur].l, rc = seg[cur].r;
seg[cur].info = seg[lc].info + seg[rc].info;
return cur;
}
int update(int pre, int l, int r, int pos) {
int cur = seg.size();
seg.push_back(seg[pre]);
if (l == r) {
seg[cur].info = Data(1);
return cur;
}
int mid = (l + r) >> 1;
if (pos <= mid) {
seg[cur].l = update(seg[pre].l, l, mid, pos);
}
else {
seg[cur].r = update(seg[pre].r, mid + 1, r, pos);
}
int lc = seg[cur].l, rc = seg[cur].r;
seg[cur].info = seg[lc].info + seg[rc].info;
return cur;
}
Data get(int rt, int l, int r, int u, int v) {
if (l > v || r < u) return Data();
if (u <= l && r <= v) return seg[rt].info;
int mid = (l + r) >> 1;
return get(seg[rt].l, l, mid, u, v) + get(seg[rt].r, mid + 1, r, u, v);
}
int build() {
return build(1, n);
}
int update(int pre, int pos) {
return update(pre, 1, n, pos);
}
Data get(int rt, int u, int v) {
return get(rt, 1, n, u, v);
}
};
PersistentSegTree pst;
int root[N];
bool check(int mid_h, int l, int r, int w) {
int i = lower_bound(h + 1, h + n + 1, make_pair(mid_h, -INF)) - h;
return (pst.get(root[i], l, r).mx_seg >= w);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> h[i].first;
h[i].second = i;
}
sort(h + 1, h + n + 1);
pst = PersistentSegTree(n);
pst.seg.reserve(18 * n);
root[n + 1] = pst.build();
for (int i = n; i >= 1; i--) {
root[i] = root[i + 1];
root[i] = pst.update(root[i], h[i].second);
}
cin >> q;
while (q--) {
int l, r, w;
cin >> l >> r >> w;
int lo = 1, hi = 1e9, ans = -1;
while (lo <= hi) {
int mid_h = (lo + hi) >> 1;
if (check(mid_h, l, r, w)) {
ans = mid_h;
lo = mid_h + 1;
}
else {
hi = mid_h - 1;
}
}
cout << ans << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAxZTUgKyA1OyAKCmludCBuLCBxOwppaSBoW05dOyAgCgpzdHJ1Y3QgUGVyc2lzdGVudFNlZ1RyZWUgewoJc3RydWN0IERhdGEgewoJCWludCBteF9zZWcgPSAwOyAgCgkJaW50IG14X3ByZWYgPSAwLCBteF9zdWYgPSAwOyAgCgkJaW50IGxlbiA9IDA7IAoKCQlEYXRhKCkge30KCgkJRGF0YShpbnQgYykgewoJCQlsZW4gPSAxOyAKCQkJaWYgKGMgPT0gMSkgbXhfc2VnID0gbXhfcHJlZiA9IG14X3N1ZiA9IDE7IAoJCX0KCgkJRGF0YSBvcGVyYXRvcisoY29uc3QgRGF0YSYgb3RoZXIpIGNvbnN0IHsKCQkJRGF0YSByZXM7ICAKCQkJcmVzLm14X3NlZyA9IG1heCh7bXhfc2VnLCBvdGhlci5teF9zZWcsIG14X3N1ZiArIG90aGVyLm14X3ByZWZ9KTsKCQkJcmVzLm14X3ByZWYgPSBteF9wcmVmICsgKG14X3ByZWYgPT0gbGVuID8gb3RoZXIubXhfcHJlZiA6IDApOyAgCgkJCXJlcy5teF9zdWYgPSBvdGhlci5teF9zdWYgKyAob3RoZXIubXhfc3VmID09IG90aGVyLmxlbiA/IG14X3N1ZiA6IDApOyAgIAoJCQlyZXMubGVuID0gbGVuICsgb3RoZXIubGVuOyAKCQkJcmV0dXJuIHJlczsgCgkJfQoJfTsgCgoJc3RydWN0IE5vZGUgewoJCWludCBsID0gMCwgciA9IDA7ICAKCQlEYXRhIGluZm87IAoJfTsgCgoJaW50IG47ICAKCXZlY3RvcjxOb2RlPiBzZWc7IAoKCVBlcnNpc3RlbnRTZWdUcmVlKCkge30KCglQZXJzaXN0ZW50U2VnVHJlZShpbnQgbikgOiBuKG4pIHt9CgoJaW50IGJ1aWxkKGludCBsLCBpbnQgcikgewoJCWludCBjdXIgPSBzZWcuc2l6ZSgpOyAKCQlzZWcucHVzaF9iYWNrKE5vZGUoKSk7ICAgIAoJCWlmIChsID09IHIpIHsKCQkJc2VnW2N1cl0uaW5mbyA9IERhdGEoMCk7IAoJCQlyZXR1cm4gY3VyOyAgCgkJfQoJCWludCBtaWQgPSAobCArIHIpID4+IDE7IAoJCXNlZ1tjdXJdLmwgPSBidWlsZChsLCBtaWQpOyAKCQlzZWdbY3VyXS5yID0gYnVpbGQobWlkICsgMSwgcik7ICAKCQlpbnQgbGMgPSBzZWdbY3VyXS5sLCByYyA9IHNlZ1tjdXJdLnI7ICAKCQlzZWdbY3VyXS5pbmZvID0gc2VnW2xjXS5pbmZvICsgc2VnW3JjXS5pbmZvOyAKCQlyZXR1cm4gY3VyOyAKCX0KCglpbnQgdXBkYXRlKGludCBwcmUsIGludCBsLCBpbnQgciwgaW50IHBvcykgewoJCWludCBjdXIgPSBzZWcuc2l6ZSgpOyAgCgkJc2VnLnB1c2hfYmFjayhzZWdbcHJlXSk7IAoJCWlmIChsID09IHIpIHsKCQkJc2VnW2N1cl0uaW5mbyA9IERhdGEoMSk7IAoJCQlyZXR1cm4gY3VyOyAKCQl9CgkJaW50IG1pZCA9IChsICsgcikgPj4gMTsgCgkJaWYgKHBvcyA8PSBtaWQpIHsKCQkJc2VnW2N1cl0ubCA9IHVwZGF0ZShzZWdbcHJlXS5sLCBsLCBtaWQsIHBvcyk7IAoJCX0KCQllbHNlIHsKCQkJc2VnW2N1cl0uciA9IHVwZGF0ZShzZWdbcHJlXS5yLCBtaWQgKyAxLCByLCBwb3MpOyAKCQl9CgkJaW50IGxjID0gc2VnW2N1cl0ubCwgcmMgPSBzZWdbY3VyXS5yOyAgCgkJc2VnW2N1cl0uaW5mbyA9IHNlZ1tsY10uaW5mbyArIHNlZ1tyY10uaW5mbzsgCgkJcmV0dXJuIGN1cjsgCgl9CgoJRGF0YSBnZXQoaW50IHJ0LCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdikgewoJCWlmIChsID4gdiB8fCByIDwgdSkgcmV0dXJuIERhdGEoKTsgICAKCQlpZiAodSA8PSBsICYmIHIgPD0gdikgcmV0dXJuIHNlZ1tydF0uaW5mbzsgIAoJCWludCBtaWQgPSAobCArIHIpID4+IDE7IAoJCXJldHVybiBnZXQoc2VnW3J0XS5sLCBsLCBtaWQsIHUsIHYpICsgZ2V0KHNlZ1tydF0uciwgbWlkICsgMSwgciwgdSwgdik7Cgl9CgoJaW50IGJ1aWxkKCkgewoJCXJldHVybiBidWlsZCgxLCBuKTsgCgl9CgoJaW50IHVwZGF0ZShpbnQgcHJlLCBpbnQgcG9zKSB7CgkJcmV0dXJuIHVwZGF0ZShwcmUsIDEsIG4sIHBvcyk7IAoJfQoKCURhdGEgZ2V0KGludCBydCwgaW50IHUsIGludCB2KSB7CgkJcmV0dXJuIGdldChydCwgMSwgbiwgdSwgdik7IAoJfQp9OyAKClBlcnNpc3RlbnRTZWdUcmVlIHBzdDsgCmludCByb290W05dOyAgCgpib29sIGNoZWNrKGludCBtaWRfaCwgaW50IGwsIGludCByLCBpbnQgdykgewoJaW50IGkgPSBsb3dlcl9ib3VuZChoICsgMSwgaCArIG4gKyAxLCBtYWtlX3BhaXIobWlkX2gsIC1JTkYpKSAtIGg7CglyZXR1cm4gKHBzdC5nZXQocm9vdFtpXSwgbCwgcikubXhfc2VnID49IHcpOwp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbjsgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQljaW4gPj4gaFtpXS5maXJzdDsKCQloW2ldLnNlY29uZCA9IGk7IAoJfSAKCglzb3J0KGggKyAxLCBoICsgbiArIDEpOyAgCgoJcHN0ID0gUGVyc2lzdGVudFNlZ1RyZWUobik7Cglwc3Quc2VnLnJlc2VydmUoMTggKiBuKTsKCXJvb3RbbiArIDFdID0gcHN0LmJ1aWxkKCk7ICAKCWZvciAoaW50IGkgPSBuOyBpID49IDE7IGktLSkgewoJCXJvb3RbaV0gPSByb290W2kgKyAxXTsgCgkJcm9vdFtpXSA9IHBzdC51cGRhdGUocm9vdFtpXSwgaFtpXS5zZWNvbmQpOyAKCX0JCgoJY2luID4+IHE7IAoJd2hpbGUgKHEtLSkgewoJCWludCBsLCByLCB3OyAKCQljaW4gPj4gbCA+PiByID4+IHc7IAoJCgkJaW50IGxvID0gMSwgaGkgPSAxZTksIGFucyA9IC0xOyAKCQl3aGlsZSAobG8gPD0gaGkpIHsKCQkJaW50IG1pZF9oID0gKGxvICsgaGkpID4+IDE7CgkJCWlmIChjaGVjayhtaWRfaCwgbCwgciwgdykpIHsKCQkJCWFucyA9IG1pZF9oOyAgICAgCgkJCQlsbyA9IG1pZF9oICsgMTsgICAKCQkJfQoJCQllbHNlIHsKCQkJCWhpID0gbWlkX2ggLSAxOyAKCQkJfQoJCX0KCQljb3V0IDw8IGFucyA8PCAnXG4nOwoJfQp9