#include<iostream>#include<cmath>usingnamespace std;constint N =1000010;int f[N][64];int n, m;inlineintread(){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;}inlinevoidinit(int n){for(int i =1; i <= n; i++) f[i][0]=read();for(int j =1; j <=21; j++){for(int i =1; i +(1<< j)-1<= n; i++) f[i][j]=max(f[i][j -1], f[i +(1<<(j -1))][j -1]);}}inlineintquery(int l,int r){int x =log2(r-l+1);returnmax(f[l][x], f[r -(1<< x)+1][x]);}intmain(){
n =read(); m =read();init(n);for(int i =1; i <= m; i++){int l, r;
l =read(), r =read();printf("%d\n",query(l, r));}return0;}