#include <bits/stdc++.h>
int a[100001], b[100000], map[100000], c[634][100001];
int main() {
  int n, q;
  std::cin >> n >> q;
  for (int i = 1; i <= n; ++i) std::cin >> a[i];
  memcpy(b, &a[1], sizeof(b));
  std::stable_sort(b, b + n);
  int N = 0, i = 0;
  while (i < n) {
    int r = std::upper_bound(b, b + n, b[i]) - b;
    if (r - i >= b[i]) map[N++] = b[i];
    i = r;
  }
  for (int i = 0; i < N; ++i)
    for (int j = 1; j <= n; ++j) c[i][j] = c[i][j - 1] + (a[j] == map[i]);
  while (q--) {
    int l, r, count = 0;
    std::cin >> l >> r;
    for (int i = 0; i < N; ++i) count += map[i] == c[i][r] - c[i][l - 1];
    std::cout << count << '\n';
  }
  return 0;
}
