#include <bits/stdc++.h>
#define int long long
using namespace std;
int f[20005][100];
int n, m;
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;
}
signed main(){
cin >> n >> m;
for (int i = 1; i <= n; i ++) f[i][0] = read();
for (int j = 1; j <= 20; j ++){
for (int i = 1; i + (1 << j) - 1 <= n; i ++)
f[i][j] = max(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);
}
int l, r;
for (int i = 1; i <= m; i ++){
cin >> l >> r;
int k = log2(r - l + 1);
printf("%lld\n", max (f[l][k], f[r - (1 << k) + 1][k]));
}
}