/**
* 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;
}