#include <stdio.h>
#define fin "distincte.in"
#define fout "distincte.out"
#define Nmax 100001
#define Mod 666013
int N,M,K,v[Nmax],used[Nmax];
int ask[Nmax][4];
inline void swap(int &a,int &b) { int aux; aux=a; a=b; b=aux; }
void qsort(int st,int dr,int p) {
int i,j,m;
i=st; j=dr;
m=ask[(i+j)/2][p];
do {
while (ask[i][p]<m) ++i;
while (ask[j][p]>m) --j;
if (i<=j) {
swap(ask[i][0],ask[j][0]);
swap(ask[i][1],ask[j][1]);
swap(ask[i][2],ask[j][2]);
swap(ask[i][3],ask[j][3]);
++i; --j;
}
} while (i<j);
if (i<dr) qsort(i,dr,p);
if (j>st) qsort(st,j,p);
}
int main() {
int i,j,k,last,sum;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
scanf("%i%i%i",&N,&K,&M);
for (i=1;i<=N;++i)
scanf("%i",&v[i]);
for (i=1;i<=M;++i) {
scanf("%i%i",&ask[i][0],&ask[i][1]);
ask[i][2]=i;
}
qsort(1,M,0);
for (i=1;i<=M;) {
j=i;
while (ask[j][0]==ask[i][0] && j<=M) ++j;
qsort(i,j-1,1);
i=j;
}
for (i=1;i<=M;) {
//printf("%i %i %i\n",ask[i][0],ask[i][1],ask[i][2]);
for (j=1;j<=K;++j) used[j]=0;
last=ask[i][0];
sum=0;
for (j=i;ask[j][0]==ask[i][0] && j<=M;++j) {
for (k=last;k<=ask[j][1];++k) {
//fprintf(stderr,"%i ",sum);
if (!used[v[k]]) {
used[v[k]]++;
sum=(sum+v[k]);
}
else
used[v[k]]++;
}
ask[j][3]=sum;
last=ask[j][1]+1;
}
i=j;
}
qsort(1,M,2);
for (i=1;i<=M;++i)
printf("%i\n",ask[i][3]);
fclose(stdin); fclose(stdout);
return 0;
}