RT
#include <iostream>
#include <cstdio>
#include <cmath>
#define int unsigned long long
using namespace std;
const int N=1e5+10;
int st[N][25],a[N],n,m;
void ST() {
for(int i = 1; i<=n; i++)st[0][i] = a[i];
int p = log(n)/log(2);
for(int k = 1; k<=p; k++) {
for(int i = 1; i<=n-(1<<k)+1; i++) {
st[k][i] = max(st[k-1][i],st[k-1][i+(1<<(k-1))]);
}
}
}
int query(int l,int r) {
int p = log(r-l+1)/log(2);
return max(st[p][l],st[p][r-(1<<p)+1]);
}
signed main() {
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
ST();
while(m--){
int l,r;
cin>>l>>r;
cout<<query(l,r)<<"\n";
}
return 0;
}