// LET ME COOK
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define sz(x) (int)x.size()
using namespace std;
struct BIT {
vector<int> bit1, bit2;
int n;
void init(int _n) {
n = _n;
bit1.assign(n+5, 0);
bit2.assign(n+5, 0);
}
void updatePoint(vector<int>& b, int u, int v) {
int idx = u;
while (idx <= n) {
b[idx] += v;
idx += (idx & (-idx));
}
}
void updateRange(int l, int r, int v) {
updatePoint(bit1, l, (n - l + 1) * v);
updatePoint(bit1, r + 1, -(n - r) * v);
updatePoint(bit2, l, v);
updatePoint(bit2, r + 1, -v);
}
int getsum(vector<int>& b, int u) {
int idx = u, ans = 0;
while (idx > 0) {
ans += b[idx];
idx -= (idx & (-idx));
}
return ans;
}
int prefixsum(int u) {
return getsum(bit1, u) - getsum(bit2, u) * (n - u);
}
int rangesum(int l, int r) {
return prefixsum(r) - prefixsum(l - 1);
}
};
struct query {
int l, r, id;
};
BIT bit;
const int N = 2e5+5;
const int T = 2e5;
vector<pair<int,int>> have;
vector<int> ans(N);
vector<query> q;
int a[N];
int n, que;
void bs(int l, int r, vector<query> Q, vector<pair<int,int>> can) {
if (l==r || Q.empty()) {
for(auto p : Q) {
ans[p.id] = l;
}
return;
}
int mid = l+r>>1;
vector<pair<int,int>> L, R;
vector<query> QL, QR;
for(auto [val, id] : can) {
if (val <= mid) {
bit.updateRange(id, id, 1);
L.push_back({val, id});
} else {
R.push_back({val, id});
}
}
for(int i = 0 ; i < sz(Q); i++) {
int tmp = bit.rangesum(Q[i].l, Q[i].r);
int len = Q[i].r - Q[i].l + 1;
int check = (len+1)/2;
if (tmp >= check) {
ans[Q[i].id] = mid;
QL.push_back(Q[i]);
} else {
QR.push_back(Q[i]);
}
}
bit.init(n+5);
bs(l, mid, QL, L);
bs(mid+1, r, QR, R);
}
void Semicolon() {
cin >> n >> que;
for(int i = 1; i <= n; i++) {
cin >> a[i];
have.push_back({a[i], i});
}
for(int i = 1; i <= que; i++) {
int l, r; cin >> l >> r;
q.push_back({l, r, i});
}
bit.init(n+5);
bs(1, T, q, have);
for(int i = 1; i <= que; i++) {
cout << ans[i] << endl;
}
}
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0);
//freopen("", "r", stdin);
//freopen("", "w", stdout);
//freopen("input.txt", "r", stdin);
Semicolon();
return 0;
}
Ly8gTEVUIE1FIENPT0sKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgc3ooeCkgKGludCl4LnNpemUoKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEJJVCB7CiAgICB2ZWN0b3I8aW50PiBiaXQxLCBiaXQyOwogICAgaW50IG47CgogICAgdm9pZCBpbml0KGludCBfbikgewogICAgICAgIG4gPSBfbjsKICAgICAgICBiaXQxLmFzc2lnbihuKzUsIDApOwogICAgICAgIGJpdDIuYXNzaWduKG4rNSwgMCk7CiAgICB9CgogICAgdm9pZCB1cGRhdGVQb2ludCh2ZWN0b3I8aW50PiYgYiwgaW50IHUsIGludCB2KSB7CiAgICAgICAgaW50IGlkeCA9IHU7CiAgICAgICAgd2hpbGUgKGlkeCA8PSBuKSB7CiAgICAgICAgICAgIGJbaWR4XSArPSB2OwogICAgICAgICAgICBpZHggKz0gKGlkeCAmICgtaWR4KSk7CiAgICAgICAgfQogICAgfQoKICAgIHZvaWQgdXBkYXRlUmFuZ2UoaW50IGwsIGludCByLCBpbnQgdikgewogICAgICAgIHVwZGF0ZVBvaW50KGJpdDEsIGwsIChuIC0gbCArIDEpICogdik7CiAgICAgICAgdXBkYXRlUG9pbnQoYml0MSwgciArIDEsIC0obiAtIHIpICogdik7CiAgICAgICAgdXBkYXRlUG9pbnQoYml0MiwgbCwgdik7CiAgICAgICAgdXBkYXRlUG9pbnQoYml0MiwgciArIDEsIC12KTsKICAgIH0KCiAgICBpbnQgZ2V0c3VtKHZlY3RvcjxpbnQ+JiBiLCBpbnQgdSkgewogICAgICAgIGludCBpZHggPSB1LCBhbnMgPSAwOwogICAgICAgIHdoaWxlIChpZHggPiAwKSB7CiAgICAgICAgICAgIGFucyArPSBiW2lkeF07CiAgICAgICAgICAgIGlkeCAtPSAoaWR4ICYgKC1pZHgpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KCiAgICBpbnQgcHJlZml4c3VtKGludCB1KSB7CiAgICAgICAgcmV0dXJuIGdldHN1bShiaXQxLCB1KSAtIGdldHN1bShiaXQyLCB1KSAqIChuIC0gdSk7CiAgICB9CgogICAgaW50IHJhbmdlc3VtKGludCBsLCBpbnQgcikgewogICAgICAgIHJldHVybiBwcmVmaXhzdW0ocikgLSBwcmVmaXhzdW0obCAtIDEpOwogICAgfQp9OwoKc3RydWN0IHF1ZXJ5IHsKICAgIGludCBsLCByLCBpZDsKfTsKCkJJVCBiaXQ7CmNvbnN0IGludCBOID0gMmU1KzU7CmNvbnN0IGludCBUID0gMmU1Owp2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gaGF2ZTsKdmVjdG9yPGludD4gYW5zKE4pOwp2ZWN0b3I8cXVlcnk+IHE7CmludCBhW05dOwppbnQgbiwgcXVlOwoKdm9pZCBicyhpbnQgbCwgaW50IHIsIHZlY3RvcjxxdWVyeT4gUSwgdmVjdG9yPHBhaXI8aW50LGludD4+IGNhbikgewogICAgaWYgKGw9PXIgfHwgUS5lbXB0eSgpKSB7CiAgICAgICAgZm9yKGF1dG8gcCA6IFEpIHsKICAgICAgICAgICAgYW5zW3AuaWRdID0gbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGludCBtaWQgPSBsK3I+PjE7CgogICAgdmVjdG9yPHBhaXI8aW50LGludD4+IEwsIFI7CiAgICB2ZWN0b3I8cXVlcnk+IFFMLCBRUjsKCgogICAgZm9yKGF1dG8gW3ZhbCwgaWRdIDogY2FuKSB7CiAgICAgICAgaWYgKHZhbCA8PSBtaWQpIHsKICAgICAgICAgICAgYml0LnVwZGF0ZVJhbmdlKGlkLCBpZCwgMSk7CiAgICAgICAgICAgIEwucHVzaF9iYWNrKHt2YWwsIGlkfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgUi5wdXNoX2JhY2soe3ZhbCwgaWR9KTsKICAgICAgICB9CiAgICB9CgoKICAgIGZvcihpbnQgaSA9IDAgOyBpIDwgc3ooUSk7IGkrKykgewogICAgICAgIGludCB0bXAgPSBiaXQucmFuZ2VzdW0oUVtpXS5sLCBRW2ldLnIpOwogICAgICAgIGludCBsZW4gPSBRW2ldLnIgLSBRW2ldLmwgKyAxOwogICAgICAgIGludCBjaGVjayA9IChsZW4rMSkvMjsKCgogICAgICAgIGlmICh0bXAgPj0gY2hlY2spIHsKICAgICAgICAgICAgYW5zW1FbaV0uaWRdID0gbWlkOwogICAgICAgICAgICBRTC5wdXNoX2JhY2soUVtpXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgUVIucHVzaF9iYWNrKFFbaV0pOwogICAgICAgIH0KICAgIH0KCgogICAgYml0LmluaXQobis1KTsKICAgIGJzKGwsIG1pZCwgUUwsIEwpOwogICAgYnMobWlkKzEsIHIsIFFSLCBSKTsKfQoKdm9pZCBTZW1pY29sb24oKSB7CiAgICBjaW4gPj4gbiA+PiBxdWU7CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBoYXZlLnB1c2hfYmFjayh7YVtpXSwgaX0pOwogICAgfQoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gcXVlOyBpKyspIHsKICAgICAgICBpbnQgbCwgcjsgY2luID4+IGwgPj4gcjsKICAgICAgICBxLnB1c2hfYmFjayh7bCwgciwgaX0pOwogICAgfQoKICAgIGJpdC5pbml0KG4rNSk7CiAgICBicygxLCBULCBxLCBoYXZlKTsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IHF1ZTsgaSsrKSB7CiAgICAgICAgY291dCA8PCBhbnNbaV0gPDwgZW5kbDsKICAgIH0KfQoKc2lnbmVkIG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOwogICAgLy9mcmVvcGVuKCIiLCAiciIsIHN0ZGluKTsKICAgIC8vZnJlb3BlbigiIiwgInciLCBzdGRvdXQpOwogICAgLy9mcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIFNlbWljb2xvbigpOwoKICAgIHJldHVybiAwOwp9