#include <bits/stdc++.h>
using namespace std;
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 a[2000010][25] ;
int n , m ;
void getM(){
for(int i = 1 ; i<= n ; i++){
a[i][0] = read();
}
}
void pre(){
for(int j = 1 ; (1 << j) <= 25 ; j++)
for(int i = 1 ; i + (1 << j) - 1 <= n ; i++){
a[i][j] = max(a[i][j -1] , a[i + (1 << (j - 1))][j - 1]);
}
}
int rmq(int l,int r)
{
int k=log2(r-l+1);
return max(a[l][k],a[r-(1<<k)+1][k]);
}
int main(){
n = read() , m = read() ;
getM();
pre() ;
while(m--){
int l = read() , r = read() ;
cout<<rmq(l , r)<<endl;
}
return 0 ;
}
样例过了 过了前三个点 求改