#include<bits/stdc++.h>
using namespace std;
int n,q;
int h[1000010];
struct node
{
int l,r;
int w;
}tree[4000010];
void Build(int k,int l,int r)
{
tree[k].l=l;
tree[k].r=r;
if(tree[k].l==tree[k].r)
{
tree[k].w=h[l];
return;
}
int mid=(l+r)/2;
Build(k*2,l,mid);
Build(k*2+1,mid+1,r);
}
int maxn=0;
int minn=1e9;
void maxAsk(int k,int l,int r)
{
if(l>tree[k].r||r<tree[k].l)
{
return;
}
if(tree[k].l==tree[k].r)
{
maxn=max(maxn,tree[k].w);
return;
}
int mid=(l+r)/2;
maxAsk(k*2,l,r);
maxAsk(k*2+1,l,r);
}
void minAsk(int k,int l,int r)
{
if(l>tree[k].r||r<tree[k].l)
{
return;
}
if(tree[k].l==tree[k].r)
{
minn=min(minn,tree[k].w);
return;
}
int mid=(l+r)/2;
minAsk(k*2,l,r);
minAsk(k*2+1,l,r);
}
int main()
{
cin>>n>>q;
for(int i=1;i<=n;i++)
{
cin>>h[i];
}
Build(1,1,n);
for(int i=1;i<=q;i++)
{
int a,b;
cin>>a>>b;
maxn=0;
minn=1e9;
maxAsk(1,a,b);
minAsk(1,a,b);
cout<<maxn-minn<<endl;
}
return 0;
}