#include <bits/stdc++.h>
using namespace std;
void fileIO()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("E:\\Codes\\PS codes\\JUST\\input.txt", "r", stdin);
freopen("E:\\Codes\\PS codes\\JUST\\output.txt", "w", stdout);
#endif
}
struct SparseTable
{
vector<int> logs;
vector<vector<int>> table;
vector<int> powers;
SparseTable(int n, vector<int> &v)
{
logs.resize(n + 2);
for (int i = 2; i <= n; i++)
{
logs[i] = logs[i / 2] + 1;
}
int j = 0, val = 1;
while (j <= logs[n])
{
powers.push_back(val);
j++;
val *= 2;
}
table = vector<vector<int>>(n + 2, vector<int>(logs[n] + 1));
for (int i = 0; i < n; i++)
{
table[i][0] = v[i];
}
for (int i = 1; i <= logs[n]; i++)
{
for (int f = 0; f + (1ll << i) - 1 < n; f++)
{
table[f][i] = max(table[f][i - 1], table[f + (1ll << (i - 1))][i - 1]);
}
}
}
int query(const int &l, const int &r)
{
int lg = logs[r - l + 1];
return max(table[l][lg], table[r - (1ll << lg) + 1][lg]);
}
};
vector<int> ans;
struct segTree
{
struct Node
{
int mxr, l, i;
Node()
{
mxr = l = i = -1;
}
Node(array<int, 3> a)
{
l = a[0];
mxr = a[1];
i = a[2];
}
Node operator+(const Node &other) const
{
Node ret;
ret.mxr = max(mxr, other.mxr);
return ret;
}
};
vector<Node> tree;
segTree(int n)
{
int sz = 1;
while (sz < n)
sz *= 2;
tree.resize(sz * 2);
}
void pointUpdate(int node, int st, int en, int idx, array<int, 3> a)
{
if (st == en)
{
tree[node] = Node(a);
return;
}
int mid = st + en >> 1;
if (idx <= mid)
pointUpdate(node * 2, st, mid, idx, a);
else
pointUpdate(node * 2 + 1, mid + 1, en, idx, a);
tree[node] = tree[node * 2] + tree[node * 2 + 1];
}
void rangeUpdate(int node, int st, int en, int l, int r, int mxR, int k)
{
if (st > r or l > en or tree[node].mxr < mxR)
return;
if (st == en)
{
ans[tree[node].i] = k;
tree[node].mxr = -1;
return;
}
int mid = st + en >> 1;
rangeUpdate(node * 2, st, mid, l, r, mxR, k);
rangeUpdate(node * 2 + 1, mid + 1, en, l, r, mxR, k);
tree[node] = tree[node * 2] + tree[node * 2 + 1];
}
};
void Striker()
{
int n;
cin >> n;
vector<int> a(n);
map<int, vector<int>> mp;
for (int i = 0; i < n; i++)
{
cin >> a[i];
mp[a[i]].push_back(i);
}
SparseTable table(n, a);
vector<array<int, 3>> all, qu;
for (auto &[val, v] : mp)
{
for (int i = 1; i < v.size(); i++)
{
int l = v[i - 1], r = v[i];
auto res = table.query(l, r);
if (res <= val)
continue;
all.push_back({res, l, r});
// cout << l << " " << r << " " << res << "\n";
}
}
int q;
cin >> q;
for (int i = 0; i < q; i++)
{
int l, r;
cin >> l >> r;
l--, r--;
qu.push_back({l, r, i});
}
sort(all.rbegin(), all.rend());
sort(qu.begin(), qu.end());
ans = vector<int>(q + 2);
int frq[n + 2]{}, sz = n + q;
sz *= 2;
segTree tree(sz);
int cnt = 0;
for (auto &[l, r, idx] : qu)
{
tree.pointUpdate(1, 0, sz - 1, cnt, {l, r, idx});
frq[l]++;
cnt++;
}
for (int i = 1; i < n; i++)
frq[i] += frq[i - 1];
for (auto &[k, l, r] : all)
{
tree.rangeUpdate(1, 0, sz - 1, 0, frq[l] - 1, r, k);
}
for (int i = 0; i < q; i++)
{
cout << ans[i] << "\n";
}
}
signed main()
{
fileIO();
int _t = 1;
cin >> _t;
for (int i = 0; i < _t; ++i)
{
Striker();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGZpbGVJTygpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJFOlxcQ29kZXNcXFBTIGNvZGVzXFxKVVNUXFxpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIkU6XFxDb2Rlc1xcUFMgY29kZXNcXEpVU1RcXG91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgp9CgpzdHJ1Y3QgU3BhcnNlVGFibGUKewogICAgdmVjdG9yPGludD4gbG9nczsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gdGFibGU7CiAgICB2ZWN0b3I8aW50PiBwb3dlcnM7CiAgICBTcGFyc2VUYWJsZShpbnQgbiwgdmVjdG9yPGludD4gJnYpCiAgICB7CiAgICAgICAgbG9ncy5yZXNpemUobiArIDIpOwogICAgICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGxvZ3NbaV0gPSBsb2dzW2kgLyAyXSArIDE7CiAgICAgICAgfQogICAgICAgIGludCBqID0gMCwgdmFsID0gMTsKICAgICAgICB3aGlsZSAoaiA8PSBsb2dzW25dKQogICAgICAgIHsKICAgICAgICAgICAgcG93ZXJzLnB1c2hfYmFjayh2YWwpOwogICAgICAgICAgICBqKys7CiAgICAgICAgICAgIHZhbCAqPSAyOwogICAgICAgIH0KICAgICAgICB0YWJsZSA9IHZlY3Rvcjx2ZWN0b3I8aW50Pj4obiArIDIsIHZlY3RvcjxpbnQ+KGxvZ3Nbbl0gKyAxKSk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgewogICAgICAgICAgICB0YWJsZVtpXVswXSA9IHZbaV07CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGxvZ3Nbbl07IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaW50IGYgPSAwOyBmICsgKDFsbCA8PCBpKSAtIDEgPCBuOyBmKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRhYmxlW2ZdW2ldID0gbWF4KHRhYmxlW2ZdW2kgLSAxXSwgdGFibGVbZiArICgxbGwgPDwgKGkgLSAxKSldW2kgLSAxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpbnQgcXVlcnkoY29uc3QgaW50ICZsLCBjb25zdCBpbnQgJnIpCiAgICB7CiAgICAgICAgaW50IGxnID0gbG9nc1tyIC0gbCArIDFdOwogICAgICAgIHJldHVybiBtYXgodGFibGVbbF1bbGddLCB0YWJsZVtyIC0gKDFsbCA8PCBsZykgKyAxXVtsZ10pOwogICAgfQp9Owp2ZWN0b3I8aW50PiBhbnM7CnN0cnVjdCBzZWdUcmVlCnsKICAgIHN0cnVjdCBOb2RlCiAgICB7CiAgICAgICAgaW50IG14ciwgbCwgaTsKICAgICAgICBOb2RlKCkKICAgICAgICB7CiAgICAgICAgICAgIG14ciA9IGwgPSBpID0gLTE7CiAgICAgICAgfQogICAgICAgIE5vZGUoYXJyYXk8aW50LCAzPiBhKQogICAgICAgIHsKICAgICAgICAgICAgbCA9IGFbMF07CiAgICAgICAgICAgIG14ciA9IGFbMV07CiAgICAgICAgICAgIGkgPSBhWzJdOwogICAgICAgIH0KICAgICAgICBOb2RlIG9wZXJhdG9yKyhjb25zdCBOb2RlICZvdGhlcikgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIE5vZGUgcmV0OwogICAgICAgICAgICByZXQubXhyID0gbWF4KG14ciwgb3RoZXIubXhyKTsKICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICB9CiAgICB9OwogICAgdmVjdG9yPE5vZGU+IHRyZWU7CiAgICBzZWdUcmVlKGludCBuKQogICAgewogICAgICAgIGludCBzeiA9IDE7CiAgICAgICAgd2hpbGUgKHN6IDwgbikKICAgICAgICAgICAgc3ogKj0gMjsKICAgICAgICB0cmVlLnJlc2l6ZShzeiAqIDIpOwogICAgfQogICAgdm9pZCBwb2ludFVwZGF0ZShpbnQgbm9kZSwgaW50IHN0LCBpbnQgZW4sIGludCBpZHgsIGFycmF5PGludCwgMz4gYSkKICAgIHsKICAgICAgICBpZiAoc3QgPT0gZW4pCiAgICAgICAgewogICAgICAgICAgICB0cmVlW25vZGVdID0gTm9kZShhKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpbnQgbWlkID0gc3QgKyBlbiA+PiAxOwogICAgICAgIGlmIChpZHggPD0gbWlkKQogICAgICAgICAgICBwb2ludFVwZGF0ZShub2RlICogMiwgc3QsIG1pZCwgaWR4LCBhKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHBvaW50VXBkYXRlKG5vZGUgKiAyICsgMSwgbWlkICsgMSwgZW4sIGlkeCwgYSk7CiAgICAgICAgdHJlZVtub2RlXSA9IHRyZWVbbm9kZSAqIDJdICsgdHJlZVtub2RlICogMiArIDFdOwogICAgfQogICAgdm9pZCByYW5nZVVwZGF0ZShpbnQgbm9kZSwgaW50IHN0LCBpbnQgZW4sIGludCBsLCBpbnQgciwgaW50IG14UiwgaW50IGspCiAgICB7CiAgICAgICAgaWYgKHN0ID4gciBvciBsID4gZW4gb3IgdHJlZVtub2RlXS5teHIgPCBteFIpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBpZiAoc3QgPT0gZW4pCiAgICAgICAgewogICAgICAgICAgICBhbnNbdHJlZVtub2RlXS5pXSA9IGs7CiAgICAgICAgICAgIHRyZWVbbm9kZV0ubXhyID0gLTE7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaW50IG1pZCA9IHN0ICsgZW4gPj4gMTsKICAgICAgICByYW5nZVVwZGF0ZShub2RlICogMiwgc3QsIG1pZCwgbCwgciwgbXhSLCBrKTsKICAgICAgICByYW5nZVVwZGF0ZShub2RlICogMiArIDEsIG1pZCArIDEsIGVuLCBsLCByLCBteFIsIGspOwogICAgICAgIHRyZWVbbm9kZV0gPSB0cmVlW25vZGUgKiAyXSArIHRyZWVbbm9kZSAqIDIgKyAxXTsKICAgIH0KfTsKCnZvaWQgU3RyaWtlcigpCnsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICB2ZWN0b3I8aW50PiBhKG4pOwogICAgbWFwPGludCwgdmVjdG9yPGludD4+IG1wOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICAgICAgbXBbYVtpXV0ucHVzaF9iYWNrKGkpOwogICAgfQogICAgU3BhcnNlVGFibGUgdGFibGUobiwgYSk7CiAgICB2ZWN0b3I8YXJyYXk8aW50LCAzPj4gYWxsLCBxdTsKICAgIGZvciAoYXV0byAmW3ZhbCwgdl0gOiBtcCkKICAgIHsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHYuc2l6ZSgpOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBpbnQgbCA9IHZbaSAtIDFdLCByID0gdltpXTsKICAgICAgICAgICAgYXV0byByZXMgPSB0YWJsZS5xdWVyeShsLCByKTsKICAgICAgICAgICAgaWYgKHJlcyA8PSB2YWwpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgYWxsLnB1c2hfYmFjayh7cmVzLCBsLCByfSk7CiAgICAgICAgICAgIC8vIGNvdXQgPDwgbCA8PCAiICIgPDwgciA8PCAiICIgPDwgcmVzIDw8ICJcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGludCBxOwogICAgY2luID4+IHE7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHE7IGkrKykKICAgIHsKICAgICAgICBpbnQgbCwgcjsKICAgICAgICBjaW4gPj4gbCA+PiByOwogICAgICAgIGwtLSwgci0tOwogICAgICAgIHF1LnB1c2hfYmFjayh7bCwgciwgaX0pOwogICAgfQoKICAgIHNvcnQoYWxsLnJiZWdpbigpLCBhbGwucmVuZCgpKTsKICAgIHNvcnQocXUuYmVnaW4oKSwgcXUuZW5kKCkpOwogICAgYW5zID0gdmVjdG9yPGludD4ocSArIDIpOwogICAgaW50IGZycVtuICsgMl17fSwgc3ogPSBuICsgcTsKICAgIHN6ICo9IDI7CiAgICBzZWdUcmVlIHRyZWUoc3opOwogICAgaW50IGNudCA9IDA7CiAgICBmb3IgKGF1dG8gJltsLCByLCBpZHhdIDogcXUpCiAgICB7CiAgICAgICAgdHJlZS5wb2ludFVwZGF0ZSgxLCAwLCBzeiAtIDEsIGNudCwge2wsIHIsIGlkeH0pOwogICAgICAgIGZycVtsXSsrOwogICAgICAgIGNudCsrOwogICAgfQogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspCiAgICAgICAgZnJxW2ldICs9IGZycVtpIC0gMV07CiAgICBmb3IgKGF1dG8gJltrLCBsLCByXSA6IGFsbCkKICAgIHsKICAgICAgICB0cmVlLnJhbmdlVXBkYXRlKDEsIDAsIHN6IC0gMSwgMCwgZnJxW2xdIC0gMSwgciwgayk7CiAgICB9CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHE7IGkrKykKICAgIHsKICAgICAgICBjb3V0IDw8IGFuc1tpXSA8PCAiXG4iOwogICAgfQp9CgpzaWduZWQgbWFpbigpCnsKICAgIGZpbGVJTygpOwogICAgaW50IF90ID0gMTsKICAgIGNpbiA+PiBfdDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgX3Q7ICsraSkKICAgIHsKICAgICAgICBTdHJpa2VyKCk7CiAgICB9Cn0=