#include <bits/stdc++.h> // NeOWami
using namespace std;
#define ft first
#define sc second
using pii = pair<int, int>;
const int N = 1e5 + 5;
const int LG = 18;
int n, q;
int a[N], pos[N];
bool ok[N];
pii ans[N];
struct query{
int l, r;
} Q[N];
void ckmin(pii &u, pii v) {
if (u.sc - u.ft > v.sc - v.ft) u = v;
}
void update(int &mmin, int &mmax, int i) {
mmin = min(mmin, a[i]);
mmax = max(mmax, a[i]);
ok[a[i]] = 1;
}
void reset(int l, int r) {
for (int i = l - 1; i <= r + 1; i++) ok[a[i]] = 0;
}
int mmin, mmax, posL, posR;
void Calc_Via_Mid(int &idl, int &idr, int l, int r) {
while((posL > mmin || posR < mmax) && idl >= l && idr <= r) {
while(posL > mmin && idl >= l && idr <= r) {
if (!ok[posL]) {
int tar = pos[posL];
while(idl >= l && idl > tar) update(mmin, mmax, --idl);
while(idr <= r && idr < tar) update(mmin, mmax, ++idr);
}
posL--;
}
while(posR < mmax && idl >= l && idr <= r) {
if (!ok[posR]) {
int tar = pos[posR];
while(idl >= l && idl > tar) update(mmin, mmax, --idl);
while(idr <= r && idr < tar) update(mmin, mmax, ++idr);
}
posR++;
}
}
}
void ImproveViaMid(vector<int> &queries, int l, int r) {
if (queries.empty()) return;
int mid = l + r >> 1;
vector<pii> invals_left, invals_right;
mmin = a[mid + 1], mmax = a[mid + 1], posL = a[mid + 1], posR = a[mid + 1];
ok[a[mid + 1]] = 1;
for (int idl = mid, idr = mid + 1; idl >= l && idr <= r; idl--) {
update(mmin, mmax, idl);
Calc_Via_Mid(idl, idr, l, r);
if (idl >= l && idr <= r) invals_left.push_back({idl, idr});
}
reverse(invals_left.begin(), invals_left.end());
reset(l, r);
mmin = a[mid], mmax = a[mid], posL = a[mid], posR = a[mid];
ok[a[mid]] = 1;
for (int idl = mid, idr = mid + 1; idl >= l && idr <= r; idr++) {
update(mmin, mmax, idr);
Calc_Via_Mid(idl, idr, l, r);
if (idl >= l && idr <= r) invals_right.push_back({idr, idl});
}
for (int i: queries) {
int id_left = upper_bound(invals_left.begin(), invals_left.end(), (pii) {Q[i].l, N}) - invals_left.begin() - 1;
int id_right = lower_bound(invals_right.begin(), invals_right.end(), (pii) {Q[i].r, -1}) - invals_right.begin();
// if (id_left >= 0 && invals_left[id_left].ft <= Q[i].l && invals_left[id_left].sc >= Q[i].r) ckmin(ans[i], invals_left[id_left]);
// if (id_right < invals_right.size() && invals_right[id_right].ft <= Q[i].l && invals_right[id_right].sc >= Q[i].r) ckmin(ans[i], invals_right[id_right]);
// Không cần 2 if trên vẫn đúng
if (id_left >= 0 && id_right < invals_right.size()) {
int lim_l = min(invals_left[id_left].ft, invals_right[id_right].sc);
int lim_r = max(invals_left[id_left].sc, invals_right[id_right].ft);
if (lim_l <= Q[i].l && lim_r >= Q[i].r) ckmin(ans[i], {lim_l, lim_r});
}
}
reset(l, r);
}
void Improve(vector<int> queries, int l, int r) {
if (l >= r) {
for (int i: queries) ckmin(ans[i], {Q[i].l, Q[i].r});
return;
}
int mid = l + r >> 1;
vector<int> queries_L, queries_R;
for (int i: queries) {
if (Q[i].r <= mid) queries_L.push_back(i);
if (Q[i].l > mid) queries_R.push_back(i);
}
Improve(queries_L, l, mid);
Improve(queries_R, mid + 1, r);
ImproveViaMid(queries, l, r);
}
signed main() {
cin.tie(NULL)->sync_with_stdio(false);
if(ifstream("Input.inp")) {
freopen("Input.inp", "r", stdin);
freopen("Output.out", "w", stdout);
}
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
pos[a[i]] = i;
}
cin >> q;
for (int i = 1; i <= q; i++) {
cin >> Q[i].l >> Q[i].r;
ans[i] = {1, n};
}
vector<int> queries;
for (int i = 1; i <= q; i++) queries.push_back(i);
Improve(queries, 1, n);
for (int i = 1; i <= q; i++) cout << ans[i].ft << " " << ans[i].sc << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IC8vIE5lT1dhbWkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZnQgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKdXNpbmcgcGlpID0gcGFpcjxpbnQsIGludD47CmNvbnN0IGludCBOID0gMWU1ICsgNTsKY29uc3QgaW50IExHID0gMTg7CmludCBuLCBxOwppbnQgYVtOXSwgcG9zW05dOwpib29sIG9rW05dOwpwaWkgYW5zW05dOwpzdHJ1Y3QgcXVlcnl7CiAgICBpbnQgbCwgcjsKfSBRW05dOwp2b2lkIGNrbWluKHBpaSAmdSwgcGlpIHYpIHsKICAgIGlmICh1LnNjIC0gdS5mdCA+IHYuc2MgLSB2LmZ0KSB1ID0gdjsKfQp2b2lkIHVwZGF0ZShpbnQgJm1taW4sIGludCAmbW1heCwgaW50IGkpIHsKICAgIG1taW4gPSBtaW4obW1pbiwgYVtpXSk7CiAgICBtbWF4ID0gbWF4KG1tYXgsIGFbaV0pOwogICAgb2tbYVtpXV0gPSAxOwp9CnZvaWQgcmVzZXQoaW50IGwsIGludCByKSB7CiAgICBmb3IgKGludCBpID0gbCAtIDE7IGkgPD0gciArIDE7IGkrKykgb2tbYVtpXV0gPSAwOwp9CmludCBtbWluLCBtbWF4LCBwb3NMLCBwb3NSOwp2b2lkIENhbGNfVmlhX01pZChpbnQgJmlkbCwgaW50ICZpZHIsIGludCBsLCBpbnQgcikgewogICAgd2hpbGUoKHBvc0wgPiBtbWluIHx8IHBvc1IgPCBtbWF4KSAmJiBpZGwgPj0gbCAmJiBpZHIgPD0gcikgewogICAgICAgIHdoaWxlKHBvc0wgPiBtbWluICYmIGlkbCA+PSBsICYmIGlkciA8PSByKSB7CiAgICAgICAgICAgIGlmICghb2tbcG9zTF0pIHsKICAgICAgICAgICAgICAgIGludCB0YXIgPSBwb3NbcG9zTF07CiAgICAgICAgICAgICAgICB3aGlsZShpZGwgPj0gbCAmJiBpZGwgPiB0YXIpIHVwZGF0ZShtbWluLCBtbWF4LCAtLWlkbCk7CiAgICAgICAgICAgICAgICB3aGlsZShpZHIgPD0gciAmJiBpZHIgPCB0YXIpIHVwZGF0ZShtbWluLCBtbWF4LCArK2lkcik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcG9zTC0tOwogICAgICAgIH0KICAgICAgICB3aGlsZShwb3NSIDwgbW1heCAmJiBpZGwgPj0gbCAmJiBpZHIgPD0gcikgewogICAgICAgICAgICBpZiAoIW9rW3Bvc1JdKSB7CiAgICAgICAgICAgICAgICBpbnQgdGFyID0gcG9zW3Bvc1JdOwogICAgICAgICAgICAgICAgd2hpbGUoaWRsID49IGwgJiYgaWRsID4gdGFyKSB1cGRhdGUobW1pbiwgbW1heCwgLS1pZGwpOwogICAgICAgICAgICAgICAgd2hpbGUoaWRyIDw9IHIgJiYgaWRyIDwgdGFyKSB1cGRhdGUobW1pbiwgbW1heCwgKytpZHIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHBvc1IrKzsKICAgICAgICB9CiAgICB9Cn0Kdm9pZCBJbXByb3ZlVmlhTWlkKHZlY3RvcjxpbnQ+ICZxdWVyaWVzLCBpbnQgbCwgaW50IHIpIHsKICAgIGlmIChxdWVyaWVzLmVtcHR5KCkpIHJldHVybjsKICAgIGludCBtaWQgPSBsICsgciA+PiAxOwogICAgdmVjdG9yPHBpaT4gaW52YWxzX2xlZnQsIGludmFsc19yaWdodDsKICAgIG1taW4gPSBhW21pZCArIDFdLCBtbWF4ID0gYVttaWQgKyAxXSwgcG9zTCA9IGFbbWlkICsgMV0sIHBvc1IgPSBhW21pZCArIDFdOwogICAgb2tbYVttaWQgKyAxXV0gPSAxOwogICAgZm9yIChpbnQgaWRsID0gbWlkLCBpZHIgPSBtaWQgKyAxOyBpZGwgPj0gbCAmJiBpZHIgPD0gcjsgaWRsLS0pIHsKICAgICAgICB1cGRhdGUobW1pbiwgbW1heCwgaWRsKTsKICAgICAgICBDYWxjX1ZpYV9NaWQoaWRsLCBpZHIsIGwsIHIpOwogICAgICAgIGlmIChpZGwgPj0gbCAmJiBpZHIgPD0gcikgaW52YWxzX2xlZnQucHVzaF9iYWNrKHtpZGwsIGlkcn0pOwogICAgfQogICAgcmV2ZXJzZShpbnZhbHNfbGVmdC5iZWdpbigpLCBpbnZhbHNfbGVmdC5lbmQoKSk7CiAgICByZXNldChsLCByKTsKICAgIAogICAgbW1pbiA9IGFbbWlkXSwgbW1heCA9IGFbbWlkXSwgcG9zTCA9IGFbbWlkXSwgcG9zUiA9IGFbbWlkXTsKICAgIG9rW2FbbWlkXV0gPSAxOwogICAgZm9yIChpbnQgaWRsID0gbWlkLCBpZHIgPSBtaWQgKyAxOyBpZGwgPj0gbCAmJiBpZHIgPD0gcjsgaWRyKyspIHsKICAgICAgICB1cGRhdGUobW1pbiwgbW1heCwgaWRyKTsKICAgICAgICBDYWxjX1ZpYV9NaWQoaWRsLCBpZHIsIGwsIHIpOwogICAgICAgIGlmIChpZGwgPj0gbCAmJiBpZHIgPD0gcikgaW52YWxzX3JpZ2h0LnB1c2hfYmFjayh7aWRyLCBpZGx9KTsKICAgIH0KCiAgICBmb3IgKGludCBpOiBxdWVyaWVzKSB7CiAgICAgICAgaW50IGlkX2xlZnQgPSB1cHBlcl9ib3VuZChpbnZhbHNfbGVmdC5iZWdpbigpLCBpbnZhbHNfbGVmdC5lbmQoKSwgKHBpaSkge1FbaV0ubCwgTn0pIC0gaW52YWxzX2xlZnQuYmVnaW4oKSAtIDE7CiAgICAgICAgaW50IGlkX3JpZ2h0ID0gbG93ZXJfYm91bmQoaW52YWxzX3JpZ2h0LmJlZ2luKCksIGludmFsc19yaWdodC5lbmQoKSwgKHBpaSkge1FbaV0uciwgLTF9KSAtIGludmFsc19yaWdodC5iZWdpbigpOwogICAgICAgIC8vIGlmIChpZF9sZWZ0ID49IDAgJiYgaW52YWxzX2xlZnRbaWRfbGVmdF0uZnQgPD0gUVtpXS5sICYmIGludmFsc19sZWZ0W2lkX2xlZnRdLnNjID49IFFbaV0ucikgY2ttaW4oYW5zW2ldLCBpbnZhbHNfbGVmdFtpZF9sZWZ0XSk7CiAgICAgICAgLy8gaWYgKGlkX3JpZ2h0IDwgaW52YWxzX3JpZ2h0LnNpemUoKSAmJiBpbnZhbHNfcmlnaHRbaWRfcmlnaHRdLmZ0IDw9IFFbaV0ubCAmJiBpbnZhbHNfcmlnaHRbaWRfcmlnaHRdLnNjID49IFFbaV0ucikgY2ttaW4oYW5zW2ldLCBpbnZhbHNfcmlnaHRbaWRfcmlnaHRdKTsKICAgICAgICAvLyBLaMO0bmcgY+G6p24gMiBpZiB0csOqbiB24bqrbiDEkcO6bmcKICAgICAgICBpZiAoaWRfbGVmdCA+PSAwICYmIGlkX3JpZ2h0IDwgaW52YWxzX3JpZ2h0LnNpemUoKSkgewogICAgICAgICAgICBpbnQgbGltX2wgPSBtaW4oaW52YWxzX2xlZnRbaWRfbGVmdF0uZnQsIGludmFsc19yaWdodFtpZF9yaWdodF0uc2MpOwogICAgICAgICAgICBpbnQgbGltX3IgPSBtYXgoaW52YWxzX2xlZnRbaWRfbGVmdF0uc2MsIGludmFsc19yaWdodFtpZF9yaWdodF0uZnQpOwogICAgICAgICAgICBpZiAobGltX2wgPD0gUVtpXS5sICYmIGxpbV9yID49IFFbaV0ucikgY2ttaW4oYW5zW2ldLCB7bGltX2wsIGxpbV9yfSk7CiAgICAgICAgfQogICAgfQoKICAgIHJlc2V0KGwsIHIpOwp9Cgp2b2lkIEltcHJvdmUodmVjdG9yPGludD4gcXVlcmllcywgaW50IGwsIGludCByKSB7CiAgICBpZiAobCA+PSByKSB7CiAgICAgICAgZm9yIChpbnQgaTogcXVlcmllcykgY2ttaW4oYW5zW2ldLCB7UVtpXS5sLCBRW2ldLnJ9KTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkID0gbCArIHIgPj4gMTsKCiAgICB2ZWN0b3I8aW50PiBxdWVyaWVzX0wsIHF1ZXJpZXNfUjsKICAgIGZvciAoaW50IGk6IHF1ZXJpZXMpIHsKICAgICAgICBpZiAoUVtpXS5yIDw9IG1pZCkgcXVlcmllc19MLnB1c2hfYmFjayhpKTsKICAgICAgICBpZiAoUVtpXS5sID4gbWlkKSBxdWVyaWVzX1IucHVzaF9iYWNrKGkpOwogICAgfQogICAgSW1wcm92ZShxdWVyaWVzX0wsIGwsIG1pZCk7CiAgICBJbXByb3ZlKHF1ZXJpZXNfUiwgbWlkICsgMSwgcik7CiAgICBJbXByb3ZlVmlhTWlkKHF1ZXJpZXMsIGwsIHIpOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIGNpbi50aWUoTlVMTCktPnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBpZihpZnN0cmVhbSgiSW5wdXQuaW5wIikpIHsKICAgICAgICBmcmVvcGVuKCJJbnB1dC5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJPdXRwdXQub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBwb3NbYVtpXV0gPSBpOwogICAgfQogICAgY2luID4+IHE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBxOyBpKyspIHsKICAgICAgICBjaW4gPj4gUVtpXS5sID4+IFFbaV0ucjsKICAgICAgICBhbnNbaV0gPSB7MSwgbn07CiAgICB9CiAgICB2ZWN0b3I8aW50PiBxdWVyaWVzOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKSBxdWVyaWVzLnB1c2hfYmFjayhpKTsKICAgIEltcHJvdmUocXVlcmllcywgMSwgbik7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBxOyBpKyspIGNvdXQgPDwgYW5zW2ldLmZ0IDw8ICIgIiA8PCBhbnNbaV0uc2MgPDwgIlxuIjsKICAgIHJldHVybiAwOwp9