#include<bits/stdc++.h>
using namespace std;
int main(){
	#define int long long
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	int n,q;
	cin>>n>>q;
	vector<int> d(n);
	int p[n];
	int ukupno = 0;
	for(int i=0;i<n;i++){
		cin>>d[i]>>p[i];
		ukupno+=p[i];
	}
	map<int, int> indeksi;
	for(int i=0;i<n;i++) indeksi[d[i]] = i;
	int m[n];
	int pojedeno[n];
	m[0] = p[0];
	ukupno-=m[0];
	pojedeno[0] = 0;
	//pojedeno[0] = min(m[d[0]], d[1]-d[0]);
	for(int i=1;i<n;i++){
		int izmedju = d[i]-d[i-1];
		int ostalo = max((long long)0, m[i-1]-izmedju);
		m[i] = p[i]+ostalo;
		pojedeno[i] = min(m[i-1], d[i]-d[i-1]);
		//cerr<<pojedeno[i]<<endl;
		//ukupno-=m[i];
		//cerr<<m[d[i]]<<endl;
	}
	int pref[n+1];
	pref[0] = 0;
	for(int i=1;i<=n;i++){
		pref[i] = pref[i-1]+pojedeno[i-1];
	}
	while(q--){
		int k;
		cin>>k;
		int res = 0;
		if(k<d[0]){
			cout<<0<<endl;
			continue;
		}
		else if(k>=d[n-1]){
			res+=pref[n];
			//cerr<<res<<endl;
			res+=min(m[n-1], k-d[n-1]+1);
		}
		else{
			int ind  = indeksi[*upper_bound(d.begin(), d.end(), k)];
			//cerr<<ind<<endl;
			res+=pref[ind];
			res+=min(m[ind-1], k-d[ind-1]+1);
		}
		//if(k>=d[n-1]) res+=min(k-d[n-1], ukupno);
		cout<<res<<endl;
	}
}