#include <bits/stdc++.h>
using namespace std;
const int mm = 405, mn = 1e5 + 5;
int n, m, a[mn], l[mm], r[mm], ans[mn];
bitset<mm> bs[mn];
void solve() {
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= m; i++) {
cin >> l[i] >> r[i];
for(int j = l[i]; j <= r[i]; j++) {
bs[j][i] = 1;
}
}
sort(a + 1, a + n + 1, greater<int>());
vector<int> pos(n);
iota(pos.begin(), pos.end(), 1);
sort(pos.begin(), pos.end(), [&](int x, int y) {
for(int j = 1; j <= m; j++) {
if(bs[x][j] != bs[y][j]) {
return bs[x][j] > bs[y][j];
}
}
return false;
});
for(int i = 0; i < n; i++) {
ans[pos[i]] = a[i + 1];
}
for(int i = 1; i <= m; i++) {
int max_val = 0;
for(int j = l[i]; j <= r[i]; j++) {
max_val = max(max_val, ans[j]);
}
cout << max_val << '\n';
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr);
int t = 1;
while (t--) solve();
return 0;
}