const maxn=50001; maxm=trunc(ln(maxn)/ln(2)); var f,g:array[0..maxn,0..maxm] of longint; num:array[0..maxn] of longint; n,m,i,j,maxnum,minnum,l,r,k:longint; function max(a,b:longint):longint; begin if a>b then exit(a); exit(b); end; function min(a,b:longint):longint; begin if a<b then exit(a); exit(b); end; function lg(x:longint):longint; begin exit(trunc(ln(x)/ln(2))); end; function ex(x:longint):longint; begin exit(1<<x); end; begin readln(n,m); for i:=1 to n do begin readln(num[i]); f[i,0]:=num[i]; g[i,0]:=num[i]; end; for j:=1 to lg(n) do for i:=1 to n-ex(j)+1 do f[i,j]:=min(f[i,j-1],f[i+ex(j-1),j-1]); for j:=1 to lg(n) do for i:=1 to n-ex(j)+1 do g[i,j]:=max(g[i,j-1],g[i+ex(j-1),j-1]); for i:=1 to m do begin readln(l,r); k:=lg(r-l+1); minnum:=min(f[l,k],f[r-ex(k)+1,k]); maxnum:=max(g[l,k],g[r-ex(k)+1,k]); writeln(maxnum-minnum); end; end.