





#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> pii;
const int N = 1e5 + 10;
int n, m;
int main()
{
cin >> n >> m;
vector<pii>a(n);//存区间的左右端点的坐标
vector<double>b(m);//存线段中点
for(int i = 0; i < n; i ++) {
int L, R; cin >> L >> R;
double mid = (L + R) / 2.0;
b[i] = mid;//存入线段中点
}
for(int i = 0; i < m; i ++) {
cin >> a[i].x >> a[i].y;//存入区间
}
sort(b.begin(), b.end());//把中点排序
//auto check1 = [&](int mid, int i) {
// return b[mid] >= a[i].x;
//};
//auto check2 = [&](int mid, int i) {
// return b[mid] <= a[i].y;
//};
for(int i = 0; i < m; i ++) {//枚举每个区间
int L = a[i].x, R = a[i].y;
int l1 = 0, r1 = n - 1;//n条线段
while(l1 < r1) {//求中点大于等于L的临界值
int mid = l1 + r1 >> 1;//除2向下取整
if(b[mid] >= L)
r1 = mid;
else
l1 = mid + 1;
}
int l2 = 0, r2 = n - 1;
while(l2 < r2) {//求中点小于等于R的临界值
int mid = l2 + r2 + 1 >> 1;//中间值向上取整,避免死循环
if(b[mid] <= R)
l2 = mid;
else
r2 = mid - 1;
}
if(b[l1] >= L && b[l2] <= R) {//取交集
cout << l2 - l1 + 1 << endl;
}else{
cout << 0 << endl;
}
}
return 0;
}