#include<bits/stdc++.h>
#define itn int
#define ll unsigned long long
using namespace std;
int lg[640];
ll f[700001][100];
inline ll read() {
ll 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() {
ll n=read(),m=read();
lg[0]=0;
for(int i=1; i<=n; i++) {
f[i][0]=read();
lg[i]=lg[i>>1]+1;
}
for(int i=1; i<=lg[n]; i++) {
for(int j=1; (1<<i)+j-1<=n; j++) {
f[j][i]=max(f[j][i-1],f[j+(1<<(i-1))][i-1]);
}
}
while(m--) {
ll l=read(),r=read();
ll len=r-l+1,lglen=lg[len]+0;
if(len==1)printf("%lld\n",f[l][0]);
else
printf("%lld\n",max(f[l][lglen-1],f[r-(1<<(lglen-1))+1][lglen-1]));
}
system("pause");
return 0;
}