1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 #include<algorithm>
5 #define LL long long
6 using namespace std;
7 typedef struct{
8 int l,r;
9 int pos;
10 }qry;
11 qry qr[1000010];
12 int a[1000050];
13 int now[1001000],next[1000050];
14 int bit[1000050],n;
15 int ans[1000050];
16 int cmp1(const qry a,const qry b){
17 if(a.l<b.l)return 1;
18 else if(a.l==b.l)return a.r<b.r;
19 else return 0;
20 }
21 int lb(int x){
22 return x&(-x);
23 }
24 int c1(int x){
25 while(x<=n){
26 bit[x]++;
27 x+=lb(x);
28 }
29 return 0;
30 }
31 int c2(int x){
32 while(x<=n){
33 bit[x]--;
34 x+=lb(x);
35 }
36 return 0;
37 }
38 int q(int x){
39 int ans=0;
40 while(x){
41 ans+=bit[x];
42 x-=lb(x);
43 }
44 return ans;
45 }
46 int main(){
47 int m,c;
48 scanf("%d %d %d",&n,&c,&m);
49 for(int i=1;i<=n;i++){
50 scanf("%d",&a[i]);
51 }
52 for(int i=n;i>0;i--){
53 next[i]=now[a[i]];
54 now[a[i]]=i;
55 }
56 for(int i=1;i<=c;i++)if(next[now[i]])c1(next[now[i]]);
57 for(int i=1;i<=m;i++){
58 scanf("%d %d",&qr[i].l,&qr[i].r);
59 qr[i].pos=i;
60 }
61 sort(qr+1,qr+m+1,cmp1);
62 int l=1;
63 for(int i=1;i<=m;i++){
64 //?????
65 while(l<qr[i].l){
66 if(next[l])c2(next[l]);
67 if(next[next[l]])c1(next[next[l]]);
68 l++;
69 }
70 ans[qr[i].pos]=q(qr[i].r)-q(qr[i].l-1);
71 }
72 for(int i=1;i<=m;i++)printf("%d\n",ans[i]);
73 return 0;
74 }