# include <fstream>
# include <algorithm>
# define DIM 100010
# define a first.first
# define b first.second
# define c second
using namespace std;
ifstream fin("distincte.in");
ofstream fout("distincte.out");
pair<pair<long long ,long long >,long long > q[DIM];
long long arb[5*DIM],v[DIM],f[DIM],sol[DIM],n,m,k,i,j,s;
void update(int nod,int st,int dr,int poz,int val){
if(st==dr){
arb[nod]=val;
return;
}
int mij=(st+dr)/2;
if(poz<=mij)
update(2*nod,st,mij,poz,val);
else
update(2*nod+1,mij+1,dr,poz,val);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
void query(int nod,int st,int dr,int p,int u){
if(p<=st&&u>=dr){
s+=arb[nod];
return;
}
int mij=(st+dr)/2;
if(p<=mij)
query(2*nod,st,mij,p,u);
if(u>mij)
query(2*nod+1,mij+1,dr,p,u);
}
int main () {
fin>>n>>k>>m;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<=m;i++){
fin>>q[i].b>>q[i].a;
q[i].c=i;
}
sort(q+1,q+m+1);
j=1;
for(i=1;i<=n;i++){
if(f[v[i]])
update(1,1,n,f[v[i]],0);
f[v[i]]=i;
update(1,1,n,i,v[i]);
while(q[j].a==i&&j<=m){
s=0;
query(1,1,n,q[j].b,q[j].a);
sol[q[j].c]=s;
j++;
}
}
for(i=1;i<=m;i++)
fout<<sol[i]<<"\n";
return 0;
}