#include <bits/stdc++.h>   using namespace std;   const int N = 100009;   int sol, qs[N], qe[N], sorted[N], ans[N], a[N], s, e;   unordered_map<int, int> freq;   void add(int el) {     sol -= !(freq[el] ^ el);     freq[el]++;     sol += !(freq[el] ^ el);   }   void remove(int el) {     sol -= !(freq[el] ^ el);     freq[el]--;     sol += !(freq[el] ^ el);   }   void mo(int idx) {     while (s > qs[idx]) add(a[--s]);     while (e <= qe[idx]) add(a[e++]);     while (s < qs[idx]) remove(a[s++]);     while (e > qe[idx] + 1) remove(a[--e]);     ans[idx] = sol;   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     int n, m;     cin >> n >> m;     for (int i = 0; i < n; i++) cin >> a[i];     for (int i = 0; i < m; i++) {       cin >> qs[i] >> qe[i];       qs[i]--, qe[i]--;       sorted[i] = i;     }     int sq = sqrt(n);     sort(sorted, sorted + m, [sq](int i, int j) {       return make_pair(qs[i] / sq, qe[i]) < make_pair(qs[j] / sq, qe[j]);     });     for (int i = 0; i < m; i++) mo(sorted[i]);     for (int i = 0; i < m; i++) cout << ans[i] <<   n ;   }   