#include <iostream>
#include <vector>
using namespace std;

struct PLAZMA{
    int dan;
    int kolko;
};

vector<int> uradi(PLAZMA[],int,vector<int>);

int main() {
    
    int N, Q;
    cin >> N >> Q;
    PLAZMA niz[N];
    
    vector<int> ima;
    ima.resize(1, 0);
    
    
    int kupovina, dan;
    for(int i=0;i<N;++i){
        cin>>niz[i].dan>>niz[i].kolko;
    }
    int pitanja[Q];
    for(int i=0;i<Q;++i){
        cin>>pitanja[i];
    }
    vector<int>pomocn=uradi(niz,N,ima);
    
    for(int i=0;i<Q;++i)
        cout<<pomocn[pitanja[i]-1]<<endl;
        
    return 0;
}
vector<int> uradi(PLAZMA niz[],int N,vector<int>ima){
    
    for (int i = 0; i < N; ++i) {
        if (ima.size() < niz[i].dan + niz[i].kolko - 1) {
            ima.resize(niz[i].dan + niz[i].kolko - 1, 0);
        }
            
        for (int kolac = niz[i].kolko, dan = niz[i].dan - 1; kolac > 0; ++dan){ 
            if (dan >= ima.size()) {
                ima.push_back(1);
                 --kolac;
            } else {
                if(ima[dan]==0){
                    ima[dan] = 1; 
                     --kolac;
                }
            }
        }
    }
    
    vector<int>pomocn;
    int pomocni[ima.size()]={0};
    if(ima[0]==true)
        pomocni[0]=1;

    for (int j = 0; j < ima.size(); ++j) {
        if(ima[j]==true){
            pomocni[j+1]=pomocni[j]+1;
        }else{
            pomocni[j+1]=pomocni[j]+1;
        }
    }
    for (int j = 0; j <ima.size(); ++j) {
        pomocn.push_back(pomocni[j]);
    }
    
    return pomocn;
}