#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>

using namespace std;

bool compare(const pair<int, char> &p1, const pair<int, char> &p2)
{
	return p1.first < p2.first;
}

vector<pair<int, int>> func(const vector<pair<int, char>> &lists)
{
	int seg = 0, n = lists.size();
	vector<pair<int, int>> res;
	for (int i = 0; i < n; ++i) {
		if (lists[i].second == 'l') ++seg;
		else if (lists[i].second == 'r') --seg;
		else res.push_back(make_pair(lists[i].first, seg));
	}
	return res;
}

int binarySearch(const vector<pair<int, int>> &arr, int left, int right, int key)
{
	if (left > right) return -1;
	else if (left == right) return arr[left].first == key ? left : -1;
	else {
		int mid = (left + right) / 2;
		if (arr[mid].first == key) return mid;
		else if (key < arr[mid].first) return binarySearch(arr, left, mid - 1, key);
		else return binarySearch(arr, mid + 1, right, key);
	}
}

int main()
{
	int s, p, a, b, pos;
	cin >> s >> p;
	vector<pair<int, char>> lists;
	vector<int> points(p);
	for (int i = 0; i < s; ++i) {
		cin >> a >> b;
		lists.push_back(make_pair(a, 'l'));
		lists.push_back(make_pair(b, 'r'));
	}
	for (int i = 0; i < p; ++i) {
		cin >> points[i];
		lists.push_back(make_pair(points[i], 'p'));
	}
	sort(lists.begin(), lists.end(), compare);
	vector<pair<int, int>> res = func(lists);
	for (int i = 0; i < p; ++i) {
		pos = binarySearch(res, 0, res.size() - 1, points[i]);
		cout << res[pos].second << " ";
	}
	return 0;
}