#include <bits/stdc++.h>
using namespace std;
int a[100005];
int dp[100005][1005];
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()
{
int n=read(),m=read();
for(int i=1;i<=n;i++)
a[i]=read(),dp[i][0]=a[i];
int len=1;
for(int mi=1;len<=n;mi++)
{
len=1<<mi;
for(int i=1;i+len-1<=n;i++)
{
int j=i+len-1;
dp[i][mi]=max(dp[i][mi-1],dp[j-(1<<(mi-1)+1)][mi-1]);
}
}
while(m--)
{
int l,r;
l=read(),r=read();
int x=floor(log2((r-l)+1));
cout<<max(dp[l][x],dp[r+(1<<x)+1][x])<<endl;
}
return 0;
}