func_code_string: #include <bits/stdc++.h>   using namespace std;   int block;   unordered_map<int, int> x;   vector<long long> a;   struct query {     int l, r, pos;     bool operator<(const query &other) const {       if (l / block == other.l / block) return r < other.r;       return l / block < other.l / block;     }   };   int l = 0, r = -1, cnt = 0;   void remove(int val) {     if (x[val] == val) cnt--;     x[val]--;     if (x[val] == val) cnt++;     if (x[val] == 0) x.erase(val);   }   void add(int val) {     if (x[val] == val) cnt--;     x[val]++;     if (x[val] == val) cnt++;   }   void solve() {     long long n, m;     cin >> n >> m;     block = sqrt(n) + 1;     a.resize(n);     for (long long i = 0; i < n; i++) cin >> a[i];     vector<query> q(m);     for (int i = 0; i < m; i++) {       cin >> q[i].l >> q[i].r;       q[i].pos = i;       q[i].l--, q[i].r--;     }     sort(q.begin(), q.end());     vector<int> ans(m);     for (int i = 0; i < m; i++) {       while (l < q[i].l) remove(a[l++]);       while (l > q[i].l) add(a[--l]);       while (r < q[i].r) add(a[++r]);       while (r > q[i].r) remove(a[r--]);       ans[q[i].pos] = cnt;     }     for (auto i : ans) cout << i <<   n ;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     long long t = 1;     while (t--) solve();     return 0;   }   