#include <bits/stdc++.h>
using namespace std;
#define GOTTAGOFAST cin.tie(0); cout.tie(0); ios::sync_with_stdio(0);
struct compar
{
bool operator()(pair<long long,long long> &a, pair<long long,long long> &b)
{
if(a.first < b.first)
return true;
if(a.first > b.first)
return false;
return a.second > b.second;
}
};
struct compar2
{
bool operator()(pair<long long,int> &a, pair<long long,int> &b)
{
return a.first < b.first;
}
};
int main()
{
GOTTAGOFAST
long long szen, glad;
cin >> szen >> glad;
vector< pair<long long, long long> > szenat(szen);
vector< pair<long long, int> > gladiat(glad+1);
vector<long long> prevglad(glad+1, 0);
vector<int> gyozelmek(glad+1, 0);
for(auto &x : szenat)
{
cin >> x.first >> x.second;
}
sort(szenat.begin(), szenat.end(), compar());
for(int i = 1; i <= glad; i++)
{
cin >> gladiat[i].first;
prevglad[i] = gladiat[i].first;
gladiat[i].second = i;
}
gladiat[0].first = 0;
gladiat[0].second = 0;
sort(gladiat.begin(), gladiat.end(), compar2());
/*for(auto &x : gladiat)
cout << x.first << ":" << x.second << " ";
cout << "\n";*/
for(int i = 1, j = 0; i <= glad; i++)
{
//cout << (gladiat[i].first) << "-";
gladiat[i].first += (gladiat[i-1].first-prevglad[gladiat[i-1].second]);
//cout << gladiat[i].first << "\n";
gyozelmek[gladiat[i].second] = gyozelmek[gladiat[i-1].second];
for(; j < szen; j++)
{
//cout << gladiat[i].second << ":" << gladiat[i].first << " -> " << szenat[j].first << "\n";
if(gladiat[i].first >= szenat[j].first)
{
gladiat[i].first += szenat[j].second;
gyozelmek[gladiat[i].second]++;
continue;
}
break;
}
}
/*for(auto &x : gladiat)
cout << x.first << ":" << x.second << " ";
cout << "\n";*/
for(int i = 1; i <= glad; i++)
cout << gyozelmek[i] << " ";
cout << "\n";
return 0;
}