#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<long long> d;
vector<long long> p;
struct D
{
long long poc, kraj, vreme;
};
vector<long long> k;
vector<D> Ds;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n,q,m,nadjen;
long long krajdan,poci,kupuj,rez;
cin>>n>>q;
d.resize(n);
p.resize(n);
k.resize(q);
for (int i=0;i<n;i++) cin >>d[i]>>p[i];
for (int i=0;i<q;i++) cin >>k[i];
//cout<<p[n-1]<<k[q-1]<<endl;
krajdan=0;
for (int i=0; i<n;i++) {
  if (d[i]>krajdan+1) {
        poci=d[i];
    krajdan=d[i]+p[i]-1;
Ds.push_back({poci,krajdan,krajdan-poci+1});
        } else {
            if (!Ds.empty()) {
        Ds.back().kraj=krajdan+p[i];
    Ds.back().vreme=Ds.back().kraj-Ds.back().poc+1;
            krajdan = Ds.back().kraj;
            } else
            {
              //cout<<poci<<endl;
            poci=d[i];
        krajdan=d[i]+p[i]-1;
            Ds.push_back({poci,krajdan,krajdan-poci+1});
            }
        }
    }


m=Ds.size();
vector<long long> ukupno(m);
vector<long long> pocs(m);
vector<long long> krajs(m);
    for (int i=0;i<m;i++){
 ukupno[i]=Ds[i].vreme;
 pocs[i]=Ds[i].poc;
    krajs[i]=Ds[i].kraj;
   //cout<<ukupno[i-1]<< '\n';
        if (i > 0) ukupno[i]+=ukupno[i-1];
    }

    for (int i=0;i<q;i++) {
kupuj=k[i]; rez=0;
//cout<<rez-kupuj<<'\n';
nadjen=upper_bound(pocs.begin(),pocs.end(),kupuj)-pocs.begin()-1;
        if (nadjen>=0)
    {
    rez=ukupno[nadjen];
        if (krajs[nadjen]>kupuj) rez=rez-(krajs[nadjen]-kupuj);
     //cout<<rez-krajs[nadjen]-kupuj<<'\n';
    }
cout << rez << '\n';
    }

return 0;
}