5 5
1 2 3 4 5
1 1
1 2
1 3
3 4
2 5
#include<bits/stdc++.h>
using namespace std;
const int N = 5e5 + 9;
int a[N], st[N][21];
int getmax(int l, int r){
int k = log(r - l + 1) / log(2);
return max(st[l][r], st[r - (1 << k)+1][k]);
}
int main()
{
int n, m; cin >> n >> m;
for (int i = 1; i <= n; i++)cin >> a[i];
for (int i = 1; i <= n; i++)st[i][0] = a[i];
for (int j=1;j<=20;++j)
for (int i = 1; i <= n; ++i){
if (i + (1 << j) - 1 <= n)
st[i][j] = max(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]);
}
while (m--){
int l, r; cin >> l >> r;
cout << getmax(l, r) << "\n";
}
return 0;
}