#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void resiProblem() {
    int N, Q;
    cin >> N >> Q;

   
    long long ukupno_pakovanja = 0;
    int poslednji_dan = 0;

    vector<pair<int, int>> pitanja(Q);
    vector<long long> odgovori(Q);

    
    for (int i = 0; i < Q; i++) {
        int k;
        cin >> k;
        pitanja[i] = {k, i};
    }

    
    sort(pitanja.begin(), pitanja.end());

    
    int trenutni_index_pitanja = 0;
    for (int i = 0; i < N; i++) {
        int d, p;
        cin >> d >> p;

        
        ukupno_pakovanja += p;

        
        while (trenutni_index_pitanja < Q && pitanja[trenutni_index_pitanja].first < d) {
            int k = pitanja[trenutni_index_pitanja].first;
            int index = pitanja[trenutni_index_pitanja].second;

           
            int days_passed = k - poslednji_dan;

            
            if (days_passed > ukupno_pakovanja) {
                odgovori[index] = ukupno_pakovanja;
                ukupno_pakovanja = 0;
            } else {
                odgovori[index] = days_passed;
                ukupno_pakovanja -= days_passed;
            }

            poslednji_dan = k;
            trenutni_index_pitanja++;
        }

        
        poslednji_dan = d;
    }

    
    while (trenutni_index_pitanja < Q) {
        int k = pitanja[trenutni_index_pitanja].first;
        int index = pitanja[trenutni_index_pitanja].second;

        int days_passed = k - poslednji_dan;

        if (days_passed > ukupno_pakovanja) {
            odgovori[index] = ukupno_pakovanja;
            ukupno_pakovanja = 0;
        } else {
            odgovori[index] = days_passed;
            ukupno_pakovanja -= days_passed;
        }

        poslednji_dan = k;
        trenutni_index_pitanja++;
    }

    
    for (int i = 0; i < Q; i++) {
        cout << odgovori[i] << endl;
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    resiProblem();

    return 0;
}