#include <iostream>

using namespace std;

int main()
{
    long long N, Q, n;
    cin >> N >> Q;
    long long donosi[N + 1], pref[N + 1], pitanje ,resenje[N+1], RESENJE,dandonosi[N + 1];
    for(long long i = 1; i < N + 1; i++){
        cin >> dandonosi[i] >> donosi[i];
    }
    resenje[0] = 0;
    dandonosi[0] = 0;
    pref[0] = 0;
    for(long long i = 1; i < N + 1; i++)
    {
        pref[i] = pref[i - 1] + dandonosi[i - 1] - dandonosi[i];
        if(pref[i] < 0)
        {
            pref[i] = 0;
        }

        pref[i] += donosi[i];
        resenje[i] = resenje[i - 1] + min(dandonosi[i] - dandonosi[i-1], pref[i - 1]);
    }
    for(long long i = 0; i < Q; i++){
        long long k = 0;
        cin >> pitanje;
        long long *it = lower_bound(dandonosi,dandonosi + N + 1,pitanje);
        long long index = it - dandonosi - 1;
        RESENJE = resenje[index] + min(pref[index], pitanje - dandonosi[index] + 1);
        cout << RESENJE << '\n';
    }
    return 0;
}