#include <bits/stdc++.h>
using namespace std;
class ST_{
public:
void in_(int in[],int size){
n=size;
for(int i=1;i<=size;i++){
st[0][i]=in[i];
}
begin();
return;
}
int mx_(int l,int r){
int k=lg[r-l+1];
// return k;
return max(st[k][l],st[k][r-(1<<k)+1]);
}
private:
int st[20][100005],n,ln;
int lg[100005];
void begin(){
// cout<<"begin!"<<endl;
for(int i=2;i<=n;i++){
lg[i]=lg[i>>1]+1;
// cout<<lg[i]<<' ';
}
ln=log2(n)+2;
int u=0,uu=0,uuu;
for(int i=1;i<ln;i++,u++){
uu=(1<<u),uuu=n-uu;
for(int j=0;j<=uuu;j++){
st[i][j]=max(st[u][j],st[u][j+uu]);
}
}
return;
}
};
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int main(){
ST_ ak;
int v[100005];
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
v[i]=read();
}
ak.in_(v,n);
for(int i=0;i<m;i++){
int a,b;
a=read(),b=read();
cout<<ak.mx_(a,b)<<endl;
}
return 0;
}
微跪自刪QWQ