#include<iostream>
using namespace std;
const int logn=20;
const int N=100003;
int n,q,l,r,s,log[N],a[N],f[N][logn+3];
inline int read(){
int x=0,f=1;char ch=getchar();
while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int main(){
n=read();q=read();
for(int i=1;i<=n;++i) a[i]=read();
log[0]=-1;
for(int i=1;i<=n;++i){
f[i][0]=a[i];
log[i]=log[i>>1]+1;
}
for(int j=1;j<=logn;++j)
for(int i=1;i+(1<<j)-1<=n;++i)
f[i][j]=max(f[i][j-1],f[i+(1<<j-1)][j-1]);
while(q--){
cin>>l>>r;
s=log[r-l+1];
cout<<max(f[l][s],f[r-(1<<s)+1][s])<<endl;
}
return 0;
}
RT
TLE了5个点,求各路神仙帮帮蒟蒻