rt
#include <bits/stdc++.h>
#define max(a, b) (a > b ? a : b)
using namespace std;
const int MAXN = 1e5 + 5;
const int MAXJ = 14;
int log_2[MAXN];
int a[MAXN][MAXJ];
int main() {
ios_base::sync_with_stdio(NULL);
cin.tie(nullptr), cout.tie(nullptr);
int n, m, l, r;
cin >> n >> m;
for (int i = 1, x = 0; i <= n; i++) {
cin >> a[i][0];
x += (i >= 1 << (x + 1));
log_2[i] = x; //预处理log
}
for (int i = 1; (1 << i) <= n; i++) {
for (int j = 1; j + (1 << i) - 1 <= n; j++) {
a[j][i] = max(a[j][i - 1], a[j + (1 << (i - 1))][i - 1]);
}
}
for (; m--;) {
cin >> l >> r;
cout << max(a[l][log_2[r - l + 1]], a[r - (1 << log_2[r - l + 1]) + 1][log_2[r - l + 1]]) << '\n';
}
return 0;
}