/*Author: KawakiMeido*/
#include <bits/stdc++.h>
#define pb push_back
#define endl "\n"
#define ll long long
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
/*Constants*/
const int N = 2e5+10;
const int INF = 1e9+7;
const long long LLINF = 1e18+3;
/*TestCases*/
int test=1;
void solve();
void TestCases(bool v){
if (v) cin >> test;
while(test--) solve();
}
/*Global Variables*/
int n,q;
int IT[N*4];
int ans[N];
int a[N];
map<int,int> mp;
vector<pair<pii,int>> v;
void update(int idx, int l, int r, int x, int val){
if (x < l || r < x) return;
if (l == r){
IT[idx] = val;
return;
}
int mid = (l+r)/2;
update(idx*2,l,mid,x,val);
update(idx*2+1,mid+1,r,x,val);
IT[idx] = IT[idx*2] + IT[idx*2+1];
}
int query(int idx, int l, int r, int x, int y){
if (y < l || r < x) return 0;
if (x <= l && r <= y) return IT[idx];
int mid = (l+r)/2;
return query(idx*2,l,mid,x,y) + query(idx*2+1,mid+1,r,x,y);
}
/*Solution*/
void solve(){
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;
v.push_back({{r,l},i});
}
v.push_back({{INF,INF},INF});
int idx = 0;
sort(v.begin(),v.end());
// for (int i=1; i<=100; i++){
// cout << query(1,1,n,i,i) << " ";
// }
for (int i=1; i<=n; i++){
if (mp.find(a[i]) != mp.end()){
update(1,1,n,mp[a[i]],0);
}
mp[a[i]] = i;
update(1,1,n,i,1);
while(v[idx].fi.fi<=i){
int l = v[idx].fi.se;
int r = v[idx].fi.fi;
int bruh = v[idx].se;
// cout << bruh << " " << l << " " << r << endl;
++idx;
ans[bruh] = query(1,1,n,l,r);
}
}
// cout << endl;
for (int i=1; i<=q; i++){
cout << ans[i] << endl;
}
// for (int i=1; i<=100; i++){
// cout << query(1,1,n,i,i) << " ";
// }
// cout << endl;
}
/*Driver Code*/
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
TestCases(0);
return 0;
}
LypBdXRob3I6IEthd2FraU1laWRvKi8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLypDb25zdGFudHMqLwpjb25zdCBpbnQgTiA9IDJlNSsxMDsKY29uc3QgaW50IElORiA9IDFlOSs3Owpjb25zdCBsb25nIGxvbmcgTExJTkYgPSAxZTE4KzM7CiAKLypUZXN0Q2FzZXMqLwppbnQgdGVzdD0xOwp2b2lkIHNvbHZlKCk7CnZvaWQgVGVzdENhc2VzKGJvb2wgdil7CiAgICBpZiAodikgY2luID4+IHRlc3Q7CiAgICB3aGlsZSh0ZXN0LS0pIHNvbHZlKCk7Cn0KIAovKkdsb2JhbCBWYXJpYWJsZXMqLwppbnQgbixxOwppbnQgSVRbTio0XTsKaW50IGFuc1tOXTsKaW50IGFbTl07Cm1hcDxpbnQsaW50PiBtcDsKdmVjdG9yPHBhaXI8cGlpLGludD4+IHY7CiAKdm9pZCB1cGRhdGUoaW50IGlkeCwgaW50IGwsIGludCByLCBpbnQgeCwgaW50IHZhbCl7CiAgICBpZiAoeCA8IGwgfHwgciA8IHgpIHJldHVybjsKICAgIGlmIChsID09IHIpewogICAgICAgIElUW2lkeF0gPSB2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsK3IpLzI7CiAgICB1cGRhdGUoaWR4KjIsbCxtaWQseCx2YWwpOwogICAgdXBkYXRlKGlkeCoyKzEsbWlkKzEscix4LHZhbCk7CiAgICBJVFtpZHhdID0gSVRbaWR4KjJdICsgSVRbaWR4KjIrMV07Cn0KIAppbnQgcXVlcnkoaW50IGlkeCwgaW50IGwsIGludCByLCBpbnQgeCwgaW50IHkpewogICAgaWYgKHkgPCBsIHx8IHIgPCB4KSByZXR1cm4gMDsKICAgIGlmICh4IDw9IGwgJiYgciA8PSB5KSByZXR1cm4gSVRbaWR4XTsKICAgIGludCBtaWQgPSAobCtyKS8yOwogICAgcmV0dXJuIHF1ZXJ5KGlkeCoyLGwsbWlkLHgseSkgKyBxdWVyeShpZHgqMisxLG1pZCsxLHIseCx5KTsKfQogCi8qU29sdXRpb24qLwp2b2lkIHNvbHZlKCl7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgZm9yIChpbnQgaT0xOyBpPD1xOyBpKyspewogICAgICAgIGludCBsLHI7CiAgICAgICAgY2luID4+IGwgPj4gcjsKICAgICAgICB2LnB1c2hfYmFjayh7e3IsbH0saX0pOwogICAgfQogICAgdi5wdXNoX2JhY2soe3tJTkYsSU5GfSxJTkZ9KTsKICAgIGludCBpZHggPSAwOwogICAgc29ydCh2LmJlZ2luKCksdi5lbmQoKSk7Ci8vICAgIGZvciAoaW50IGk9MTsgaTw9MTAwOyBpKyspewovLyAgICAgICAgY291dCA8PCBxdWVyeSgxLDEsbixpLGkpIDw8ICIgIjsKLy8gICAgfQogICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspewogICAgICAgIGlmIChtcC5maW5kKGFbaV0pICE9IG1wLmVuZCgpKXsKICAgICAgICAgICAgdXBkYXRlKDEsMSxuLG1wW2FbaV1dLDApOwogICAgICAgIH0KICAgICAgICBtcFthW2ldXSA9IGk7CiAgICAgICAgdXBkYXRlKDEsMSxuLGksMSk7CiAgICAgICAgd2hpbGUodltpZHhdLmZpLmZpPD1pKXsKICAgICAgICAgICAgaW50IGwgPSB2W2lkeF0uZmkuc2U7CiAgICAgICAgICAgIGludCByID0gdltpZHhdLmZpLmZpOwogICAgICAgICAgICBpbnQgYnJ1aCA9IHZbaWR4XS5zZTsKLy8gICAgICAgICAgICBjb3V0IDw8IGJydWggPDwgIiAiIDw8IGwgPDwgIiAiIDw8IHIgPDwgZW5kbDsKICAgICAgICAgICAgKytpZHg7CiAgICAgICAgICAgIGFuc1ticnVoXSA9IHF1ZXJ5KDEsMSxuLGwscik7CiAgICAgICAgfQogICAgfQovLyAgICBjb3V0IDw8IGVuZGw7CiAgICBmb3IgKGludCBpPTE7IGk8PXE7IGkrKyl7CiAgICAgICAgY291dCA8PCBhbnNbaV0gPDwgZW5kbDsKICAgIH0KLy8gICAgZm9yIChpbnQgaT0xOyBpPD0xMDA7IGkrKyl7Ci8vICAgICAgICBjb3V0IDw8IHF1ZXJ5KDEsMSxuLGksaSkgPDwgIiAiOwovLyAgICB9Ci8vICAgIGNvdXQgPDwgZW5kbDsKfQogCi8qRHJpdmVyIENvZGUqLwppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAKICAgIFRlc3RDYXNlcygwKTsKIAogICAgcmV0dXJuIDA7Cn0K