#include <stdio.h>
#include <algorithm>
using namespace std;
#define maxn 55555
int sum1[maxn<<2],sum2[maxn<<2];
int maxx,minn;
void pushup(int id)
{
sum1[id]=max(sum1[id<<1],sum1[id<<1|1]);
sum2[id]=min(sum2[id<<1],sum2[id<<1|1]);
}
void build(int l,int r,int id)
{
if(l==r)
{
scanf("%d",&sum1[id]);
sum2[id]=sum1[id];
return ;
}
int mid=l+r>>1;
build(l,mid,id<<1);
build(mid+1,r,id<<1|1);
pushup(id);
}
void query(int L,int R,int l,int r,int id)
{
if(L<=l&&R>=r)
{
maxx=max(maxx,sum1[id]);
minn=min(minn,sum2[id]);
return ;
}
int mid=l+r>>1;
if(L<=mid)query(L,R,l,mid,id<<1);
if(R>mid)query(L,R,mid+1,r,id<<1|1);
}
int main()
{
int m,n;
scanf("%d %d",&n,&m);
build(1,n,1);
while(m--)
{
int a,b;
maxx=0;
minn=1<<30;
scanf("%d %d",&a,&b);
query(a,b,1,n,1);
printf("%d\n",maxx-minn);
}
return 0;
}
#include <algorithm>
using namespace std;
#define maxn 55555
int sum1[maxn<<2],sum2[maxn<<2];
int maxx,minn;
void pushup(int id)
{
sum1[id]=max(sum1[id<<1],sum1[id<<1|1]);
sum2[id]=min(sum2[id<<1],sum2[id<<1|1]);
}
void build(int l,int r,int id)
{
if(l==r)
{
scanf("%d",&sum1[id]);
sum2[id]=sum1[id];
return ;
}
int mid=l+r>>1;
build(l,mid,id<<1);
build(mid+1,r,id<<1|1);
pushup(id);
}
void query(int L,int R,int l,int r,int id)
{
if(L<=l&&R>=r)
{
maxx=max(maxx,sum1[id]);
minn=min(minn,sum2[id]);
return ;
}
int mid=l+r>>1;
if(L<=mid)query(L,R,l,mid,id<<1);
if(R>mid)query(L,R,mid+1,r,id<<1|1);
}
int main()
{
int m,n;
scanf("%d %d",&n,&m);
build(1,n,1);
while(m--)
{
int a,b;
maxx=0;
minn=1<<30;
scanf("%d %d",&a,&b);
query(a,b,1,n,1);
printf("%d\n",maxx-minn);
}
return 0;
}