#include<iostream>
#include<cmath>
using namespace std;
int n,m,f[100010][32];
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;
}
inline int fin(int l,int r){
int k = log(r - l + 1) / log(2);
return max(f[l][k],f[r - (1 << k) + 1][k]);
}
int main(){
n = read(),m = read();
for(register int i = 1;i <= n;i++){
f[i][0] = read();
}
for(int j = 1;(1<<j) <= n;j++){
for(int i = 1;i <= n - (1<<j) + 1;i++){
f[i][j] = max(f[i][j - 1],f[i + (1<<(j - 1))][j - 1]);
}
}
for(register int i = 1;i <= m;i++){
int a,b;
cin>>a>>b;
cout<<fin(a,b)<<endl;
}
}