#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int N = 5e4+10;
struct node
{
int l,r,id;
}arr[N];
long long ans[N];
long long block,sum;
int cnt[N],mp[N];
bool operator<(const node a,const node b)
{
return (a.r/block)==(b.r/block)?a.l<(b.l):a.r<(b.r);
}
void add(int x)
{
sum += (cnt[x]<<1)+1;
cnt[x]++;
}
void del(int x)
{
sum -= (cnt[x]<<1)-1;
cnt[x]--;
}
int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
block = sqrt(n);
for(int i=1;i<=n;i++)
scanf("%d",&mp[i]);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&arr[i].l,&arr[i].r);
arr[i].id = i;
}
sort(arr+1,arr+m+1);
//cout<<"sort ok"<<endl;
int l=1,r=0;
for(int i=1;i<=m;i++)
{
//cout<<i<<endl;
while(l<arr[i].l)
del(mp[l++]);
while(l>arr[i].l)
add(mp[--l]);
while(r<arr[i].r)
add(mp[++r]);
while(r>arr[i].r)
del(mp[r--]);
ans[arr[i].id]=sum;
}
for(int i=1;i<=m;i++)
printf("%lld\n",ans[i]);
return 0;
}