#include<bits/stdc++.h>
using namespace std;
constexpr int N = 100005;
int n , m,st[N][40],a[N],Log2[N];
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;
}
void init(){
Log2[0] = -1;
for(int i = 1; i <= n ; i++){
st[i][0] = a[i];
Log2[i] = Log2[i / 2] + 1;
}
for(int j = 1 ; j <= Log2[n] ; j++){
for(int i = 1 ; i + (1 << j) - 1<= n ; i++){
st[i][j] = max(st[i][j - 1],st[i + (1 << (j - 1))][j - 1]);
}
}
}
int rmq(int l, int r){
int k = Log2[r - l + 1];
return max(st[l][k] , st[r - (1 << k) + 1][k]);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
n= read() , m = read();
for(int i = 1 ; i <= n ; i++){
a[i] = read();
}
init();
for(int i = 1 ; i <= m ; i++){
int l , r;
l = read() , r = read();
cout << rmq(l , r)<< endl;
}
}
TLE了后三个,求求大佬帮我看看