//
// Created by xingchaoyue on 2019/5/14.
//
#include<iostream>
#include<cstdio>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef long long ll;
const int maxn = 50000+100;
const int inf = 0x3f3f3f3f;
int maxs[maxn<<2];
int minn[maxn<<2];
int n,m;
void build(int l,int r,int rt){
if(l==r){
int num;
scanf("%d",&num);
maxs[rt]=num;
minn[rt] = num;
return;
}
int m = (l+r)>>1;
build(lson);
build(rson);
maxs[rt]=max(maxs[rt<<1],maxs[rt<<1|1]);
minn[rt]=min(minn[rt<<1],minn[rt<<1|1]);
}
int ma=0;
int mi = inf;
void query(int L,int R,int l,int r,int rt){
if(L<=l&&r<=R){
if(maxs[rt]>ma){
ma = maxs[rt];
}
if(minn[rt]<mi){
mi = minn[rt];
}
return;
}
int m = (l+r)>>1;
if(L<=m)query(L,R,lson);
if(R>m)query(L,R,rson);
}
int main(){
scanf("%d%d",&n,&m);
build(1,n,1);
for(int i =0;i<m;++i){
int x,y;
scanf("%d%d",&x,&y);
ma = 0;
mi = inf;
query(x,y,1,n,1);
printf("%d\n",ma-mi);
}
}