#include <bits/stdc++.h>
using namespace std;
int a[100005],f[100005][32],n,m,k[100005],ans[2000005];
inline int read() {
int s = 0, w = 1;
char chr = getchar();
while(chr < '0' || chr > '9') {
if(chr == '-') {
w = -1;
chr = getchar();
}
}
while(chr >= '0' && chr <= '9') {
s = (s<<1) + (s<<3) + (chr^48);
chr = getchar();
}
return s;
}
void deal() {
int t = log2(n);
for(int i = 1; i <= n; i++) f[i][0] = a[i];
for(int i = 1; i <= n; i++) k[i] = log2(i);
for(int j = 1; j <= t; j++) {
for(int i = 1; i <= n-(1<<j)+1; i++) {
f[i][j] = max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}
}
}
int st(int ll,int rr) {
int tmp = k[rr-ll+1];
return max(f[ll][tmp], f[rr-(1<<tmp)+1][tmp]);
}
int main() {
n = read();m = read();
for(int i = 1; i <= n; i++) a[i] = read();
deal();
for(int i = 1; i <= m; i++) {
int l = read(),r = read();
ans[i] = st(l,r);
}
for(int i = 1; i <= m; i++) printf("%d\n", ans[i]);
return 0;
}