7
9
10
uses math;
var
a,b,c,i,j,k:longint;
v:array[1..100000]of longint;
r:array[1..100000,0..20,1..2]of longint;
function ss(l,u:longint):longint;
var
i,j:longint;
begin
if l=u then
begin
inc(r[l,0,1]);
inc(r[u,0,1]);
r[l,r[l,0,1],1]:=v[l];
r[l,r[l,0,1],2]:=u;
r[u,r[u,0,1],1]:=v[l];
r[u,r[u,0,1],2]:=l;
exit(v[l]);
end
else
begin
i:=ss(l,(u+l) div 2);
j:=ss((u+l) div 2+1,u);
inc(r[l,0,1]);
inc(r[u,0,1]);
r[l,r[l,0,1],1]:=max(i,j);
r[l,r[l,0,1],2]:=u;
r[u,r[u,0,1],1]:=max(i,j);
r[u,r[u,0,1],2]:=l;
exit(max(i,j));
end;
end;
function yy(l,u,i,j:longint):longint;
var
i1,j1,o:longint;
begin
i1:=0;
j1:=0;
if (i=l)and(j=u) then
begin
for o:=1 to r[l,0,1] do
begin
if r[l,o,2]=u then
exit(r[l,o,1]);
end;
end
else
begin
if (i>=l)and(i<=(u+l) div 2)and(j>=l)and(j<=(u+l) div 2) then
i1:=yy(l,(u+l) div 2,i,j);
if (i>=(u+l) div 2+1)and(i<=u)and(j>=(u+l) div 2+1)and(j<=u) then
j1:=yy((u+l) div 2+1,u,i,j);
if (i>=l)and(i<=(u+l) div 2)and(j>=(u+l) div 2+1)and(j<=u) then
begin
i1:=yy(l,(u+l) div 2,i,(u+l) div 2);
j1:=yy((u+l) div 2+1,u,(u+l) div 2+1,j);
end;
exit(max(i1,j1));
end;
end;
begin
readln(a,b);
for c:=1 to a do
read(v[c]);
ss(1,a);
for c:=1 to b do
begin
readln(i,j);
writeln(yy(1,a,i,j));
end;
end.