#include<bits/stdc++.h>

int main() {


    long long N, Q;
    std::cin >> N >> Q;

    std::vector<long long> dani(N);
    std::vector<long long> plazmice(N);
    for (int i = 0; i < N; i++) {
        std::cin >> dani[i] >> plazmice[i];
    }

    std::vector<long long> pitanja(Q);
    std::vector<int> bPitanja(Q);
    for (int i = 0; i < Q; i++) {
        std::cin >> pitanja[i];
        bPitanja[i] = i;
    }

    std::sort(bPitanja.begin(), bPitanja.end(), [&](int a, int b) {
        return pitanja[a] < pitanja[b];
    });

    std::vector<long long> poDanu(Q);


    long long ukupnoPojela = 0;
    long long danas = 0;
    int KojDan = 0;

    for (int i = 0; i < Q; ++i) {
        long long k = pitanja[bPitanja[i]];


        while (KojDan < N && dani[KojDan] <= k) {

            long long prviD = std::max(danas + 1, dani[KojDan]);
            long long poslednjiD = std::min(k, dani[KojDan] + plazmice[KojDan] - 1);
            if (poslednjiD >= prviD) {
                ukupnoPojela += poslednjiD - prviD + 1;
                danas = poslednjiD;
            }
            ++KojDan;
        }


        if (danas < k) {
            ukupnoPojela += k - danas;
            danas = k;
        }

        poDanu[bPitanja[i]] = ukupnoPojela;
    }


    for (long long dan : poDanu) {
        std::cout << dan << "\n";
    }
    //odgovor je- pojela je previse

    return 0;
}