var a:array[1..1 shl 17,0..17]of longint;
d,n,nn,m:longint;
function min(a,b:longint):longint;
begin
if a>b then min:=b else min:=a;
end;
procedure rez;
var i,j,p:longint;
begin
p:=1;
for j:=1 to d do
begin
for i:=1 to n do
a[i,j]:=min(a[i,j-1],a[min(n,i+p),j-1]);
p:=p*2;
end;
end;
function log2(k:longint):longint;
var d:longint;
begin
d:=0;
while 1 shl d<k do inc(d);
log2:=d-1;
end;
function rmq(x,y:longint):longint;
var d:longint;
begin
if x=y then rmq:=a[x,0]
else begin
d:=log2(y-x+1);
rmq:=min(a[x,d],a[y-(1 shl d)+1,d]);
end
end;
procedure init;
var f,ff:text; i,j,x,y:longint;
begin
assign(f,'rmq.in');
reset(f);
assign(ff,'rmq.out');
rewrite(ff);
read(f,n,m);
for i:=1 to n do begin read(f,a[i,0]); {write(a[i,1],' ');}end;
d:=log2(n)+1;
rez;
for i:=1 to m do
begin
read(f,x,y);
writeln(ff,rmq(x,y));
end;
close(f);
close(ff);
end;
begin
init;
{writeln;
writeln(ad(1),' ',ad(2),' ',ad(3),' ',ad(10),' ',ad(31),' ',ad(32));
readln;}
end.