#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,q,a[300005],ans[300005],bit[300005];
map <int,int> mp;
vector <pair<int,int>> ve[300005];
void UPDATE(int i, int v)
{
while (i<=n) bit[i]+=v,i+=i&(-i);
return;
}
int GET(int l, int r)
{
l--;
int resl=0,resr=0;
while (l>0) resl+=bit[l],l-=l&(-l);
while (r>0) resr+=bit[r],r-=r&(-r);
return resr-resl;
}
signed main()
{
ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>q;
for (int i=1;i<=n;i++) cin>>a[i];
for (int i=1;i<=q;i++)
{
int l,r;
cin>>l>>r;
ve[r].push_back({l,i});
}
for (int i=1;i<=n;i++)
{
if (!mp[a[i]]) mp[a[i]]=i,UPDATE(i,1);
else UPDATE(i,1),UPDATE(mp[a[i]],-1),mp[a[i]]=i;
for (pair <int,int> p : ve[i])
{
int l=p.first,idx=p.second;
ans[idx]=GET(l,i);
}
}
for (int i=1;i<=q;i++) cout<<ans[i]<<'\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbixxLGFbMzAwMDA1XSxhbnNbMzAwMDA1XSxiaXRbMzAwMDA1XTsKbWFwIDxpbnQsaW50PiBtcDsKdmVjdG9yIDxwYWlyPGludCxpbnQ+PiB2ZVszMDAwMDVdOwp2b2lkIFVQREFURShpbnQgaSwgaW50IHYpCnsKICAgIHdoaWxlIChpPD1uKSBiaXRbaV0rPXYsaSs9aSYoLWkpOwogICAgcmV0dXJuOwp9CmludCBHRVQoaW50IGwsIGludCByKQp7CiAgICBsLS07CiAgICBpbnQgcmVzbD0wLHJlc3I9MDsKICAgIHdoaWxlIChsPjApIHJlc2wrPWJpdFtsXSxsLT1sJigtbCk7CiAgICB3aGlsZSAocj4wKSByZXNyKz1iaXRbcl0sci09ciYoLXIpOwogICAgcmV0dXJuIHJlc3ItcmVzbDsKfQpzaWduZWQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLGNpbi50aWUoMCksY291dC50aWUoMCk7CiAgICBjaW4+Pm4+PnE7CiAgICBmb3IgKGludCBpPTE7aTw9bjtpKyspIGNpbj4+YVtpXTsKICAgIGZvciAoaW50IGk9MTtpPD1xO2krKykgCiAgICB7CiAgICAgICAgaW50IGwscjsKICAgICAgICBjaW4+Pmw+PnI7CiAgICAgICAgdmVbcl0ucHVzaF9iYWNrKHtsLGl9KTsKICAgIH0KICAgIGZvciAoaW50IGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBpZiAoIW1wW2FbaV1dKSBtcFthW2ldXT1pLFVQREFURShpLDEpOwogICAgICAgIGVsc2UgVVBEQVRFKGksMSksVVBEQVRFKG1wW2FbaV1dLC0xKSxtcFthW2ldXT1pOwogICAgICAgIGZvciAocGFpciA8aW50LGludD4gcCA6IHZlW2ldKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGw9cC5maXJzdCxpZHg9cC5zZWNvbmQ7CiAgICAgICAgICAgIGFuc1tpZHhdPUdFVChsLGkpOwogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGk9MTtpPD1xO2krKykgY291dDw8YW5zW2ldPDwnXG4nOwogICAgcmV0dXJuIDA7Cn0=