//author: NgTh Thao Duyen ~~~
//link submit: https://o...content-available-to-author-only...i.info/problem/dquery
//date: 07.09.25
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll maxn = 1e6;
struct query{
ll l,r,idx;
};
query q[maxn+5];
ll block;
bool cmp(query x, query y)
{
if(x.l / block != y.l / block)return x.l / block < y.l / block;
return x.r < y.r;
}
ll a[maxn+5],n,k,dis,cnt[maxn+5],ans[maxn+5];
void add(ll pos)
{
dis+=(++cnt[a[pos]]==1);
}
void rem(ll pos)
{
dis-=(--cnt[a[pos]]==0);
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
//freopen("task.inp","r",stdin);
cin>>n;
for(ll i=1; i<=n; i++)cin>>a[i];
cin>>k;
for(ll i=1; i<=k; i++)
{
cin>>q[i].l>>q[i].r;
q[i].idx = i;
}
block = sqrtl(n);
sort(q+1,q+k+1,cmp);
ll curl = 1, curr = 0;
for (int i = 1; i <= k; i++) {
ll L = q[i].l, R = q[i].r;
while (curl > L) add(--curl);
while (curr < R) add(++curr);
while (curl < L) rem(curl++);
while (curr > R) rem(curr--);
ans[q[i].idx] = dis;
}
for (ll i = 1; i <= k; i++) cout << ans[i] << "\n";
return 0;
}
Ly9hdXRob3I6IE5nVGggVGhhbyBEdXllbiB+fn4KLy9saW5rIHN1Ym1pdDogaHR0cHM6Ly9vLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5pLmluZm8vcHJvYmxlbS9kcXVlcnkKLy9kYXRlOiAwNy4wOS4yNQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGxsIGxvbmcgbG9uZyAKY29uc3QgbGwgbWF4biA9IDFlNjsKCnN0cnVjdCBxdWVyeXsKICAgIGxsIGwscixpZHg7Cn07CnF1ZXJ5IHFbbWF4bis1XTsKbGwgYmxvY2s7Cgpib29sIGNtcChxdWVyeSB4LCBxdWVyeSB5KQp7CiAgICBpZih4LmwgLyBibG9jayAhPSB5LmwgLyBibG9jaylyZXR1cm4geC5sIC8gYmxvY2sgPCB5LmwgLyBibG9jazsKICAgIHJldHVybiB4LnIgPCB5LnI7Cn0KbGwgYVttYXhuKzVdLG4sayxkaXMsY250W21heG4rNV0sYW5zW21heG4rNV07Cgp2b2lkIGFkZChsbCBwb3MpCnsKICAgIGRpcys9KCsrY250W2FbcG9zXV09PTEpOwp9Cgp2b2lkIHJlbShsbCBwb3MpCnsKICAgIGRpcy09KC0tY250W2FbcG9zXV09PTApOwp9CmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsKICAgIC8vZnJlb3BlbigidGFzay5pbnAiLCJyIixzdGRpbik7CiAgICBjaW4+Pm47CiAgICBmb3IobGwgaT0xOyBpPD1uOyBpKyspY2luPj5hW2ldOwogICAgY2luPj5rOwogICAgZm9yKGxsIGk9MTsgaTw9azsgaSsrKQogICAgewogICAgICAgIGNpbj4+cVtpXS5sPj5xW2ldLnI7CiAgICAgICAgcVtpXS5pZHggPSBpOwogICAgfQogICAgYmxvY2sgPSBzcXJ0bChuKTsKICAgIHNvcnQocSsxLHEraysxLGNtcCk7CiAgICBsbCBjdXJsID0gMSwgY3VyciA9IDA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBrOyBpKyspIHsKICAgICAgICBsbCBMID0gcVtpXS5sLCBSID0gcVtpXS5yOwogICAgICAgIHdoaWxlIChjdXJsID4gTCkgYWRkKC0tY3VybCk7CiAgICAgICAgd2hpbGUgKGN1cnIgPCBSKSBhZGQoKytjdXJyKTsKICAgICAgICB3aGlsZSAoY3VybCA8IEwpIHJlbShjdXJsKyspOwogICAgICAgIHdoaWxlIChjdXJyID4gUikgcmVtKGN1cnItLSk7CiAgICAgICAgYW5zW3FbaV0uaWR4XSA9IGRpczsKICAgIH0KICAgIGZvciAobGwgaSA9IDE7IGkgPD0gazsgaSsrKSBjb3V0IDw8IGFuc1tpXSA8PCAiXG4iOwoKICAgIHJldHVybiAwOwp9Cg==