#include<bits/stdc++.h>
using namespace std;
int sum[1000005],p[1000005],b[1000005];
int lowbit(int x){return x&(-x);}
void add(int *d,int x,int v){for(x;x<=1000000;x+=lowbit(x)) d[x]+=v;}
struct node{
int l,r,id,ans;
}a[1000005];
bool cmp(node a,node b){return a.r<b.r;}
bool cmp2(node a,node b){return a.id<b.id;}
int get(int x){
int ret=0;
for(x;x>0;x-=lowbit(x)){ret+=sum[x];}
return ret;
}
int main(){
int n,m;
cin>>n;
for(int i=1;i<=n;i++){cin>>b[i];}
cin>>m;
for(int i=1;i<=m;i++){cin>>a[i].l>>a[i].r;a[i].id=i;}
sort(a+1,a+1+m,cmp);
for(int i=1,j=1;i<=n;i++){
if(p[b[i]]!=0) add(sum,b[i],-1);p[b[i]]=i;
add(sum,i,1);
while(a[j].r==i){a[j].ans=get(a[j].r)-get(a[j].l-1);j++;}
}
sort(a+1,a+1+m,cmp2);
for(int i=1;i<=m;i++) cout<<a[i].ans<<endl;
}