help me.
#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[100010];
int st[100010][20];
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(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
n = read();
m = read();
for (int i = 1; i <= n; i++){
a[i] = read();
st[i][0] = a[i];
}
for (int i = 1; i <= log2(n); i++){
int _long = 1 << i;
for (int j = 1; j <= n - _long + 1; j++)
st[j][i] = max(st[j][i - 1], st[j + _long / 2][i - 1]);
}
while (m--){
int l, r;
l = read();
r = read();
int x = log2(r - l + 1);
int _long = 1 << x;
cout << max(st[l][x], st[r - _long + 1][x]) << endl;
}
return 0;
}