#include<iostream>
using namespace std;
int m,n,lg[100005],st[20][100005];
void init(){
cin>>m>>n;
lg[1]=0;
for(int i=2;i<=m;i++) lg[i]=lg[i>>1]+1;
for(int i=1;i<=m;i++) cin>>st[0][i];
for(int j=1;j<=lg[m];j++){
for(int i=1;i<=m-(1<<j)+1;i++){
st[j][i]=max(st[j-1][i],st[j-1][i+(1<<(j-1))]);
}
}
}
int find(int l,int r){
int si=lg[r-l+1];
return max(st[si][l],st[si][r-(1<<si)+1]);
}
int main(){
init();
while(n--){
int x,y;
cin>>x>>y;
cout<<find(x,y)<<endl;
}
}