#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, Q;
    cin >> N >> Q;

    map<int, int> kupovina;
    for (int i = 0; i < N; i++) {
        int D, P;
        cin >> D >> P;
        kupovina[D] += P;
    }

    vector<int> upiti(Q);
    for (int i = 0; i < Q; i++) {
        cin >> upiti[i];
    }

    int maxQuery = 0;
    for (int i = 0; i < Q; i++) {
        maxQuery = max(maxQuery, upiti[i]);
    }

    int dostupno = 0;
    int pojedeno = 0;
    map<int, int> pojedenodo;

    for (int dan = 1; dan <= maxQuery; dan++) {
        if (kupovina.find(dan) != kupovina.end()) {
            dostupno += kupovina[dan];
        }

        if (dostupno > 0) {
            pojedeno++;
            dostupno--;
        }

        pojedenodo[dan] = pojedeno;
    }

    for (int i = 0; i < Q; i++) {
        int K = upiti[i];
        cout << pojedenodo[K] << endl;
    }

    return 0;
}