#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int l,r;
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 fang(int x){
return 1<<x;
}
int n,m,lg2[N],st[N][32],a;
int work(int n){
int k=1;
lg2[1]=0;
lg2[2]=1;
for(int i=3;i<=n;i++){
if(int(pow(2,k+1))==i)
k++;
lg2[i]=k;
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
n=read();
m=read();
work(n);
for(int i=1;i<=n+1;i++){
a=read();
st[i][0]=a;
}
for(int i=1;fang(i)<=n;i++){//序列长度
int k=fang(i);
for(int j=1;j+k-1<=n;j++){
st[j][i]=max(st[j][i-1],st[j+fang(i-1)][i-1]);
}
}
while(m--){
cin>>l>>r;
int k=lg2[r-l+1];
cout<<max(st[l][k],st[r-fang(k)+1][k])<<'\n';
}
return 0;
}
下数据点1,和输出一模一样,评测机说我RE