#include<iostream>
#include<algorithm>
#include<cmath>
const int maxn=1e5+10;
typedef long long ll;
int n,m,a,b,ans;
struct node
{
ll s,k;
}f[maxn];
int ff[maxn],t[maxn];
int main( )
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>t[i];
ff[t[i]]++;
}
for(int i=1;i<maxn;i++)
{
if(ff[i])
{
f[i].s=f[i-1].s+i*ff[i];
f[i].k=f[i-1].k+ff[i];
}
else
{
f[i].s=f[i-1].s;
f[i].k=f[i-1].k;
}
}
sort(t+1,t+n+1);
while(m--)
{
ans=0;
cin>>a>>b;
if(a>b) swap(a,b);
if(t[n]>b) ans+=(f[t[n]].s-f[b].s)-b*(f[t[n]].k-f[b].k);
int mid=(a+b)/2;
if(b>mid+1) ans+=b*(f[b-1].k-f[mid].k)-(f[b-1].s-f[mid].s);
if(mid>a) ans+=(f[mid].s-f[a].s)-a*(f[mid].k-f[a].k);
ans+=a*f[a-1].k-f[a-1].s;
cout<<ans<<endl;
}
return 0;
}