#include <iostream>
#include <map>
using namespace std;
#define MAX 30009
#define mii map<int,int>
int arr[MAX];
mii tree[MAX<<2];
mii::iterator itr;
void merge(mii &t,mii a,mii &b)
{
t=a;
for(itr=b.begin();itr!=b.end();itr++)
t[itr->first]++;
}
void build(int t,int i,int j)
{
if(i==j){
tree[t][arr[i]]++;
return;
}
int l=t<<1,r=l+1,mid=(i+j)>>1;
build(l,i,mid);
build(r,mid+1,j);
merge(tree[t],tree[l],tree[r]);
}
mii query(int t,int i,int j,int ri,int rj)
{
mii tmp,a,b;
if(j<ri||i>rj)
return a;
if(ri<=i && rj>=j)
return tree[t];
int l=t<<1,r=l+1,mid=(i+j)>>1;
a = query(l,i,mid,ri,mid);
b = query(r,mid+1,j,mid+1,rj);
merge(tmp,a,b);
return tmp;
}
int main() {
int n,q,a,b;
mii t;
cin>>n;
for(int i=1;i<=n;i++)
cin>>arr[i];
build(1,1,n);
cin>>q;
while(q--)
{
cin>>a>>b;
t = query(1,1,n,a,b);
cout<<t.size()<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBNQVggMzAwMDkKI2RlZmluZSBtaWkgbWFwPGludCxpbnQ+CmludCBhcnJbTUFYXTsKbWlpIHRyZWVbTUFYPDwyXTsKbWlpOjppdGVyYXRvciBpdHI7Cgp2b2lkIG1lcmdlKG1paSAmdCxtaWkgYSxtaWkgJmIpCnsKCXQ9YTsKCWZvcihpdHI9Yi5iZWdpbigpO2l0ciE9Yi5lbmQoKTtpdHIrKykKCQl0W2l0ci0+Zmlyc3RdKys7Cn0KCnZvaWQgYnVpbGQoaW50IHQsaW50IGksaW50IGopCnsKCWlmKGk9PWopewoJCXRyZWVbdF1bYXJyW2ldXSsrOwoJCXJldHVybjsKCX0KCWludCBsPXQ8PDEscj1sKzEsbWlkPShpK2opPj4xOwoJYnVpbGQobCxpLG1pZCk7CglidWlsZChyLG1pZCsxLGopOwoJbWVyZ2UodHJlZVt0XSx0cmVlW2xdLHRyZWVbcl0pOwp9CgptaWkgcXVlcnkoaW50IHQsaW50IGksaW50IGosaW50IHJpLGludCByaikKewoJbWlpIHRtcCxhLGI7CglpZihqPHJpfHxpPnJqKQoJCXJldHVybiBhOwoJCQoJaWYocmk8PWkgJiYgcmo+PWopCgkJcmV0dXJuIHRyZWVbdF07CgkJCglpbnQgbD10PDwxLHI9bCsxLG1pZD0oaStqKT4+MTsKCWEgPSBxdWVyeShsLGksbWlkLHJpLG1pZCk7CgliID0gcXVlcnkocixtaWQrMSxqLG1pZCsxLHJqKTsKCW1lcmdlKHRtcCxhLGIpOwoJcmV0dXJuIHRtcDsKfQoKaW50IG1haW4oKSB7CglpbnQgbixxLGEsYjsKCW1paSB0OwoJY2luPj5uOwoJZm9yKGludCBpPTE7aTw9bjtpKyspCgkJY2luPj5hcnJbaV07CglidWlsZCgxLDEsbik7CgljaW4+PnE7Cgl3aGlsZShxLS0pCgl7CgkJY2luPj5hPj5iOwoJCXQgPSBxdWVyeSgxLDEsbixhLGIpOwoJCWNvdXQ8PHQuc2l6ZSgpPDxlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=