/* ___
_______________| |_
/\ \
/ \ \
/____\__________________\
| | |
| | Date : 23/07/2025|
| | Author : pppssslc|
|____|__________________|
*/
#include<bits/stdc++.h>
using namespace std;
typedef string str;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vector<int>> vii;
typedef vector<vector<ll>> vll;
typedef map<int, int> mpii;
typedef map<ll, ll> mpll;
typedef set<int> si;
typedef set<ll> sl;
#define prio_que priority_queue
#define se second
#define fi first
#define For(i, l, r, x) for(int i = l; i <= r; i += x)
#define Ford(i, l, r, x) for(int i = l; i >= r; i -= x)
#define Fore(x, a) for(auto x: a)
#define pb push_back
#define ins insert
#define all(a) a.begin(), a.end()
const ll inf = 1e18 + 1;
const int mod = 1e9 + 7;
const int maxn = 2e5 + 1;
vi val[maxn];
int bit[maxn], l[maxn], r[maxn], u[maxn], v[maxn], res[maxn];
int n, q;
void upd(int p){
For(i, p, n, i&-i) ++bit[i];
}
int get(int p){
int ret = 0;
if(p == 0) return 0;
Ford(i, p, 1, i&-i) ret += bit[i];
return ret;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> n >> q;
memset(res, -1, sizeof(res));
For(i, 1, n, 1){
int a; cin >> a;
val[a].pb(i);
}
For(i, 1, q, 1){
cin >> u[i] >> v[i];
l[i] = 1, r[i] = n;
}
while(true){
memset(bit, 0, sizeof(bit));
bool check = true;
vi qrs[n + 1];
For(i, 1, q, 1){
if(l[i] <= r[i]) check = false;
else continue;
qrs[(l[i] + r[i]) / 2].pb(i);
}
if(check) break;
Ford(i, n, 1, 1){
Fore(id, val[i])upd(id);
Fore(id, qrs[i]){
if(get(v[id]) - get(u[id] - 1) >= i){
l[id] = i + 1;
res[id] = i;
}else r[id] = i - 1;
}
}
}
For(i, 1, q, 1) cout << res[i] << '\n';
return (0 ^ 0);
}
LyogICAgICAgICAgICAgICAgX19fCiAgIF9fX19fX19fX19fX19fX3wgfF8KICAvXCAgICAgICAgICAgICAgICAgIFwKIC8gIFwgICAgICAgICAgICAgICAgICBcCi9fX19fXF9fX19fX19fX19fX19fX19fX1wKfCAgICB8ICAgICAgICAgICAgICAgICAgfAp8ICAgIHwgRGF0ZSA6IDIzLzA3LzIwMjV8CnwgICAgfCBBdXRob3IgOiBwcHBzc3NsY3wKfF9fX198X19fX19fX19fX19fX19fX19ffAoqLwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgc3RyaW5nIHN0cjsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiBkb3VibGUgZGI7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGRiOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpaTsKdHlwZWRlZiBwYWlyPGxsLCBsbD4gcGxsOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmw7CnR5cGVkZWYgdmVjdG9yPHZlY3RvcjxpbnQ+PiB2aWk7CnR5cGVkZWYgdmVjdG9yPHZlY3RvcjxsbD4+IHZsbDsKdHlwZWRlZiBtYXA8aW50LCBpbnQ+IG1waWk7CnR5cGVkZWYgbWFwPGxsLCBsbD4gbXBsbDsKdHlwZWRlZiBzZXQ8aW50PiBzaTsKdHlwZWRlZiBzZXQ8bGw+IHNsOwojZGVmaW5lIHByaW9fcXVlIHByaW9yaXR5X3F1ZXVlCgojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgRm9yKGksIGwsIHIsIHgpIGZvcihpbnQgaSA9IGw7IGkgPD0gcjsgaSArPSB4KQojZGVmaW5lIEZvcmQoaSwgbCwgciwgeCkgZm9yKGludCBpID0gbDsgaSA+PSByOyBpIC09IHgpCiNkZWZpbmUgRm9yZSh4LCBhKSBmb3IoYXV0byB4OiBhKQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGlucyBpbnNlcnQKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLCBhLmVuZCgpCgpjb25zdCBsbCBpbmYgPSAxZTE4ICsgMTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CmNvbnN0IGludCBtYXhuID0gMmU1ICsgMTsKCnZpIHZhbFttYXhuXTsKaW50IGJpdFttYXhuXSwgbFttYXhuXSwgclttYXhuXSwgdVttYXhuXSwgdlttYXhuXSwgcmVzW21heG5dOwppbnQgbiwgcTsKCnZvaWQgdXBkKGludCBwKXsKCUZvcihpLCBwLCBuLCBpJi1pKSArK2JpdFtpXTsKfQoKaW50IGdldChpbnQgcCl7CglpbnQgcmV0ID0gMDsKCWlmKHAgPT0gMCkgcmV0dXJuIDA7CglGb3JkKGksIHAsIDEsIGkmLWkpIHJldCArPSBiaXRbaV07CglyZXR1cm4gcmV0Owp9CgppbnQgbWFpbigpewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKTsKCWNpbiA+PiBuID4+IHE7CgltZW1zZXQocmVzLCAtMSwgc2l6ZW9mKHJlcykpOwoJRm9yKGksIDEsIG4sIDEpewoJCWludCBhOyBjaW4gPj4gYTsKCQl2YWxbYV0ucGIoaSk7Cgl9CglGb3IoaSwgMSwgcSwgMSl7CgkJY2luID4+IHVbaV0gPj4gdltpXTsKCQlsW2ldID0gMSwgcltpXSA9IG47Cgl9Cgl3aGlsZSh0cnVlKXsKCQltZW1zZXQoYml0LCAwLCBzaXplb2YoYml0KSk7CgkJYm9vbCBjaGVjayA9IHRydWU7CgkJdmkgcXJzW24gKyAxXTsKCQlGb3IoaSwgMSwgcSwgMSl7CgkJCWlmKGxbaV0gPD0gcltpXSkgY2hlY2sgPSBmYWxzZTsKCQkJZWxzZSBjb250aW51ZTsKCQkJcXJzWyhsW2ldICsgcltpXSkgLyAyXS5wYihpKTsKCQl9CgkJaWYoY2hlY2spIGJyZWFrOwoJCUZvcmQoaSwgbiwgMSwgMSl7CgkJCUZvcmUoaWQsIHZhbFtpXSl1cGQoaWQpOwoJCQlGb3JlKGlkLCBxcnNbaV0pewoJCQkJaWYoZ2V0KHZbaWRdKSAtIGdldCh1W2lkXSAtIDEpID49IGkpewoJCQkJCWxbaWRdID0gaSArIDE7CgkJCQkJcmVzW2lkXSA9IGk7CgkJCQl9ZWxzZSByW2lkXSA9IGkgLSAxOwoJCQl9CgkJfQoJfQoJRm9yKGksIDEsIHEsIDEpIGNvdXQgPDwgcmVzW2ldIDw8ICdcbic7CglyZXR1cm4gKDAgXiAwKTsKfQ==