#include <bits/stdc++.h>
using namespace std;
int n,m;
int logx[100005];
int st[100005][25];
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;
}
void log2(){
logx[1]=0;
for(int i=2;i<=n;i++)
logx[i]=logx[i>>1]+1;
}
int main(){
n=read(),m=read();
log2();
for(int i=1;i<=n;i++)
st[i][0]=read();
for(int i=1;i<=logx[n];i++){
for(int j=1;j+(1<<i)-1<=n;j++){
st[j][i]=max(st[j][i-1],st[j+(1<<(i-1))][i-1]);
}
}
while(m--){
int l=read(),r=read();
int d=logx[r-l+1];
int ans=max(st[l][d],st[r-(1<<d)+1][d]);
cout<<ans<<endl;
}
return 0;
}