#include<bits/stdc++.h>
using namespace std;
int dp[100001][25],k[100001];
int main(){
int n,q;
cin >> n >> q;
for(int i=1;i<=n;i++) cin >> dp[i][0];
k[1]=0;
for(int i=2;i<=n;i++) k[i]=k[i<<1]+1;
for(int i=1;i<=k[n];i++)
for(int j=1;j<=n-(1<<i)+1;j++) dp[j][i]=max(dp[j][i-1],dp[j+(1<<(i-1))][i-1]);
while(q--){
int l,r;
cin >> l >> r;
int t=k[r-l+1];
cout << max(dp[l][t],dp[r-(1<<t)+1][t]) << endl;
}
return 0;
}