// Author: __BruteForce__
#include <bits/stdc++.h>
using namespace std;
#define MAX_N 100005
int n, q;
int a[MAX_N];
vector<int> val[MAX_N];
int lo[MAX_N], hi[MAX_N], ql[MAX_N], qr[MAX_N];
stack<int> to_check[MAX_N];
int bit[MAX_N];
void update(int p) {
for (; p <= n; p += p & -p) bit[p]++;
}
int get(int p) {
int sum = 0;
for (; p; p -= p & -p) sum += bit[p];
return sum;
}
int main() {
cin.tie(0)->sync_with_stdio(false);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i];
val[a[i]].push_back(i);
}
for (int i = 1; i <= q; i++) {
cin >> ql[i] >> qr[i];
lo[i] = 1, hi[i] = MAX_N - 1;
}
bool changed = true;
while (changed) {
// Reset
changed = false;
memset(bit, 0, sizeof(bit));
for (int i = 1; i <= q; i++)
if (lo[i] != hi[i]) to_check[(lo[i] + hi[i]) >> 1].push(i);
for (int mid = 1; mid < MAX_N; mid++) {
for (int pos : val[mid]) update(pos);
while (to_check[mid].size()) {
changed = true;
int idx = to_check[mid].top();
to_check[mid].pop();
int cnt = get(qr[idx]) - get(ql[idx] - 1);
int range = qr[idx] - ql[idx] + 1;
if (cnt >= (range + 1) / 2)
hi[idx] = mid;
else
lo[idx] = mid + 1;
}
}
}
for (int i = 1; i <= q; i++) cout << lo[i] << "\n";
}
Ly8gQXV0aG9yOiBfX0JydXRlRm9yY2VfXwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIE1BWF9OIDEwMDAwNQoKaW50IG4sIHE7CmludCBhW01BWF9OXTsKdmVjdG9yPGludD4gdmFsW01BWF9OXTsKaW50IGxvW01BWF9OXSwgaGlbTUFYX05dLCBxbFtNQVhfTl0sIHFyW01BWF9OXTsKc3RhY2s8aW50PiB0b19jaGVja1tNQVhfTl07CmludCBiaXRbTUFYX05dOwoKdm9pZCB1cGRhdGUoaW50IHApIHsKICAgIGZvciAoOyBwIDw9IG47IHAgKz0gcCAmIC1wKSBiaXRbcF0rKzsKfQoKaW50IGdldChpbnQgcCkgewogICAgaW50IHN1bSA9IDA7CiAgICBmb3IgKDsgcDsgcCAtPSBwICYgLXApIHN1bSArPSBiaXRbcF07CiAgICByZXR1cm4gc3VtOwp9CgppbnQgbWFpbigpIHsKICAgIGNpbi50aWUoMCktPnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgogICAgY2luID4+IG4gPj4gcTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgIHZhbFthW2ldXS5wdXNoX2JhY2soaSk7CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBxOyBpKyspIHsKICAgICAgICBjaW4gPj4gcWxbaV0gPj4gcXJbaV07CiAgICAgICAgbG9baV0gPSAxLCBoaVtpXSA9IE1BWF9OIC0gMTsKICAgIH0KCiAgICBib29sIGNoYW5nZWQgPSB0cnVlOwogICAgd2hpbGUgKGNoYW5nZWQpIHsKICAgICAgICAvLyBSZXNldAogICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICBtZW1zZXQoYml0LCAwLCBzaXplb2YoYml0KSk7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQogICAgICAgICAgICBpZiAobG9baV0gIT0gaGlbaV0pIHRvX2NoZWNrWyhsb1tpXSArIGhpW2ldKSA+PiAxXS5wdXNoKGkpOwoKICAgICAgICBmb3IgKGludCBtaWQgPSAxOyBtaWQgPCBNQVhfTjsgbWlkKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgcG9zIDogdmFsW21pZF0pIHVwZGF0ZShwb3MpOwoKICAgICAgICAgICAgd2hpbGUgKHRvX2NoZWNrW21pZF0uc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGludCBpZHggPSB0b19jaGVja1ttaWRdLnRvcCgpOwogICAgICAgICAgICAgICAgdG9fY2hlY2tbbWlkXS5wb3AoKTsKCiAgICAgICAgICAgICAgICBpbnQgY250ID0gZ2V0KHFyW2lkeF0pIC0gZ2V0KHFsW2lkeF0gLSAxKTsKICAgICAgICAgICAgICAgIGludCByYW5nZSA9IHFyW2lkeF0gLSBxbFtpZHhdICsgMTsKICAgICAgICAgICAgICAgIGlmIChjbnQgPj0gKHJhbmdlICsgMSkgLyAyKQogICAgICAgICAgICAgICAgICAgIGhpW2lkeF0gPSBtaWQ7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgbG9baWR4XSA9IG1pZCArIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKSBjb3V0IDw8IGxvW2ldIDw8ICJcbiI7Cn0K