#include<cstdio> #include<iostream> #include<cmath> using namespace std; const int MAXN=2e5; int a[MAXN]; int f[MAXN][20]; int n; void init(){ for(int i=1;i<=n;i++) f[i][0]=a[i]; int k=log2(n)+1; for(int j=1;j<=k;j++) for(int i=1;i<=n;i++){ f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]); } } int query(int l,int r){ int k=log2(r-l+1); return max(f[l][k],f[r-(1<<k)+1][k]); } int main(){ int m; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); init(); for(int i=1;i<=m;i++){ int l,r; scanf("%d%d",&l,&r); printf("%d\n",query(l,r)); } return 0; }