#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#define ll long long
#define ull unsigned long long
using namespace std;
ll m,n;
ll st[10000003][24];
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(){
n=read();
m=read();
for(int i=1;i<=n;i++){
st[i][0]=read();
}
int t=0;
while(1<<(t+1)<=n)t++;
for(int i=1;i<=t;i++)
for(int j=1;j<=n-(1<<i)+1;j++)
st[j][i]=max(st[j][i-1],st[j+(1<<(i-1))][i-1]);
while(m--){
ll l,r;
l=read();
r=read();
t=0;
while((1<<(t+1))<=(r-l+1))t++;
printf("%lld\n",max(st[l][t],st[r-(1<<t)+1][t]));
}
return 0;
}