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

int main()
{
    int n, q;
    cin >> n >> q;
    vector<ll> p(n);
    vector<ll> d(n);
    map<ll, ll> indeksi;
    for (int i = 0; i < n; i++)
    {
        cin >> p[i] >> d[i];
        indeksi[p[i]] = i;
    }

    vector<ll> naLager(n);
    naLager[0] = d[0];
    for (int i = 1; i < n; i++)
    {
        if (p[i] - p[i - 1] >= naLager[i - 1])
            naLager[i] = d[i];
        else
            naLager[i] = naLager[i - 1] - (p[i] - p[i - 1]) + d[i];
    }

    vector<ll> doPotrosnja(n);
    doPotrosnja[0] = 0;//to je ustvari potrosnja p[0], prvog dana je potrosio 1

    for (int i = 1; i < n; i++)
    {
        doPotrosnja[i] = doPotrosnja[i - 1] + min(p[i] - p[i - 1], naLager[i - 1]);
    }

    //ovde sam ustvari kao pravio taj niz ja
    for (int i = 0; i < q; i++)
    {
        ll u;
        cin >> u;//dan na koji se nalazimo

        auto it = lower_bound(p.begin(), p.end(), u);//treba mi do zadnje azuriranje kolko se moglo potrosi;
        
        ll indeksOdIt = it - p.begin();


        ll kojiJeDan;
        if (indeksOdIt != n)
            kojiJeDan = *it;//ovo je brojka koju vrati ustvari lower
        else
            kojiJeDan = n;

//        ll sledeciDan = it - p.begin();
        //dan pre taj
        ll nasDan;
        if (kojiJeDan != n)
            nasDan = indeksi[kojiJeDan] - 1;//das mi indeks od konkretno 14 i vratis me nazad jednom
        else
            nasDan = n - 1;


        if (nasDan == -1)
            cout << 0 << endl;
        else
        {
            ll res = doPotrosnja[nasDan] + min(naLager[nasDan], u - p[nasDan] + 1);//drugo je kolko moze, p[nasDan] je prva vrednost iza lower(ne 14 nego prva manja)

            cout << res << endl;
        }

    }
}