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

int n, q; map<long long, int> d; vector<long long> k;

long long najskorijaZaliha(long long dan) {
    auto pos = d.upper_bound(dan);
    if (pos == d.begin()) return 0;
    auto najskoriji = prev(pos);
    return najskoriji->first;
}

long long danaJela(long long dan1, long long dan2, long long& zaliha, bool poslDan) {
    long long dana, prosloDana = dan2 - dan1;
    if (dan2 < dan1) return 0;
    if (poslDan) prosloDana++;
    zaliha += d[dan1];
    if (zaliha <= prosloDana) {
        dana = zaliha;
        zaliha = 0;
    }
    else {
        dana = prosloDana;
        zaliha -= prosloDana;
    }
    return dana;
}

long long danaMoglaDaJede(long long dan) {
    long long dana = 0, zaliha = 0, nskorZaliha = najskorijaZaliha(dan);
    for (auto it = d.begin(); it->first <= nskorZaliha && it != d.end(); it++) {
        if (next(it) != d.end() && next(it)->first <= dan) {
            dana += danaJela(it->first, next(it)->first, zaliha, 0);
        }
        else {
            dana += danaJela(it->first, dan, zaliha, 1);
        }
    }
    return dana;
}

int main() {

    cin >> n >> q;

    for (int i = 0; i < n; i++) {
        long long dan; int kolicina;
        cin >> dan >> kolicina;
        d[dan] = kolicina;
    }

    for (int i = 0; i < q; i++) {
        long long pitanje;
        cin >> pitanje;
        k.push_back(pitanje);
    }

    for (long long pitanje : k) {
        cout << danaMoglaDaJede(pitanje) << endl;
    }

    return 0;
}