80分RE
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,q,maxh[100001][100],a,b,d,x,y,z;
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-'0');
ch=getchar();
}
return x*f;
}
void ST(){
d=log(n)/log(2)+1;
for(b=1;b<d;b++){
for(a=1;a<=n-(1<<b)+1;a++){
maxh[a][b]=max(maxh[a][b-1],maxh[a+(1<<(b-1))][b-1]);
}
}
}
int main(){
n=read();
q=read();
for(a=1;a<=n;a++)
maxh[a][0]=read();
ST();
for(a=1;a<=q;a++){
x=read();
y=read();
d=log(y-x)/log(2);
z=max(maxh[x][d],maxh[y-(1<<d)+1][d]);
printf("%d\n",z);
}
return 0;
}