#include <bits/stdc++.h>

using namespace std;

#define ull unsigned long long

ull prvi_manji(ull dp[], ull q){
	ull levo = 0, desno = sizeof(dp) -1;
	ull rezultat = -1;
 
	while(levo <= desno){
		ull sredina = levo + (desno-levo)/2;
 
		if(dp[sredina] < q){
			rezultat = sredina;
			levo = sredina + 1;
		} else {
			desno = sredina - 1;
		}
	}
	return rezultat;
}

int main(){
	int N, Q;
	cin >> N >> Q;
	ull kupljeno[N], dani[N], pojedeno[N]; //niz dp sluzi za cuvanje kriticnih vrednosti
			   		  					   //tj. stanja broja plazmi na krajevima dana kada ih otac kupuje 
	for (int i = 0; i < N; i++){
		cin >> dani[i] >> kupljeno[i];
		if (i>0){
		kupljeno[i] = kupljeno[i] - 1 + max(1 + kupljeno[i - 1] - dani[i] + dani[i - 1], 0ull);  //max sluzi da bi se sredio slucaj kada devojcica gladuje	
		pojedeno[i] = min(pojedeno[i-1]+dani[i]-dani[i-1], pojedeno[i-1]+kupljeno[i-1]);
		}
		else pojedeno[i] = 1; //ako je prvi ulaz, pojela je samo jedan
	}
	while(Q--){
		ull q;
		cin >> q;
		ull prviManji;
		if(q > dani[N-1]) {
			prviManji = N-1;
			cout << pojedeno[prviManji]+min(q-dani[prviManji], kupljeno[prviManji]);
		}
		else {
			prviManji = prvi_manji(dani, q);
			if(prviManji <= 0){
				cout << 0 << '\n';
			}
			else {
				cout << pojedeno[prviManji]+min(q-dani[prviManji], kupljeno[prviManji]);
			}
		} 
		
		
	}
	return 0;
}