/**
 * Author: Sergey Kopeliovich (Burunduk30@gmail.com)
 * Date: 2015.03.05
 */

#include <cstdio>
#include <cassert>
#include <algorithm>

using namespace std;

#define forn(i, n) for (int i = 0; i < (int)(n); i++)

typedef pair <int, int> pii;

const int N = 1e5;
const int M = 1e5;

int n, m, ans[M];
struct Event {
  int x, i, t;
  bool operator < ( const Event &e ) const { return pii(x, t) < pii(e.x, e.t); }
} e[N + 2 * M];

int main() {
  #define NAME "segpnt"
  assert(freopen(NAME ".in", "r", stdin));
  assert(freopen(NAME ".out", "w", stdout));

  assert(scanf("%d%d", &n, &m) == 2 && n <= N && m <= M);
  forn(i, n)
    scanf("%d", &e[i].x);
  forn(i, m) {
    scanf("%d", &e[n].x), e[n].i = i, e[n++].t = -1;
    scanf("%d", &e[n].x), e[n].i = i, e[n++].t = 1;
  }
  sort(e, e + n);

  int cnt = 0;
  forn(i, n)
    if (!e[i].t)
      cnt++;
    else
      ans[e[i].i] += (e[i].t == 1 ? cnt : -cnt);
  forn(i, m)
    printf("%d ", ans[i]);
  return 0;
}