#include <bits/stdc++.h>
using namespace std;
ifstream f("calafat.in");
ofstream g("calafat.out");
long long sol[200010], arb[800010];
int l,r,n,m,x,last[200010];
vector<pair<int, int> > q[200010];
pair<int, int> upd[200010];
void update(int po, int st, int dr, int a, int b)
{
if(st==dr) {arb[po]=b; return ;}
int m=(st+dr)/2;
if(a<=m) update(2*po,st,m,a,b);
else update(2*po+1,m+1,dr,a,b);
arb[po]=arb[2*po]+arb[2*po+1];
}
void interogare(int po, int st, int dr, int a, int b, long long &sol)
{
if(st>=a&&b>=dr) {sol+=arb[po]; return;}
int m=(st+dr)/2;
if(a<=m) interogare(2*po,st,m,a,b,sol);
if(b>m) interogare(2*po+1,m+1,dr,a,b,sol);
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
{
f>>x;
if(last[x])
{
upd[i]={last[x],i-last[x]};
}
last[x]=i;
}
for(int i=1;i<=m;i++)
{
f>>l>>r;
q[r].push_back({l,i});
}
for(int j=1;j<=n;j++)
{
if(upd[j].first) update(1,1,n,upd[j].first,upd[j].second);
for(auto it: q[j]) interogare(1,1,n,it.first,j,sol[it.second]);
}
for(int i=1;i<=m;i++) g<<sol[i]<<'\n';
return 0;
}