#include<bits/stdc++.h>
using namespace std;
int lg(int x){
if(x==1) return 0;
else return lg(x/2)+1;
}
int read(){
int x=0;char ch=getchar();
while (ch<'0'||ch>'9') ch=getchar();
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x;
}
int main(){
int N,M;
cin>>N>>M;
int o=log2(N),a[N][o],p=1;
for(int i=0;i<N;i++) a[i][0]=read();
for(int i=1;i<=o;i++){
N-=p;
for(int j=0;j<N;j++){
a[j][i]=max(a[j][i-1],a[j+p][i-1]);
}
p<<=1;
}
int l,r,len,t;
while(M--){
l=read(),r=read();
l--;
len=r-l;
t=lg(len);
len=1<<t;
cout<<max(a[l][t],a[r-len][t])<<endl;
}
system("pause");
return 0;
}