#include <bits/stdc++.h>
unsigned long long int ulaz_dan[300050], pojela_plazme[300050];
unsigned long long int ps[300050], stanje_plazme[300050];

long long int niz_veci(long long int trazeni_br);
int broj_nabavki, broj_pitanja;
int main()
{
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cin >> broj_nabavki >> broj_pitanja;
    for (int i = 0; i < broj_nabavki; i++)
    {
        std::cin >> ulaz_dan[i] >> stanje_plazme[i];
    }
    pojela_plazme[0] = 1;
    ps[0] = 1;
    for (int i = 1; i < broj_nabavki; i++)
    {
        unsigned long long int proslo_dana_od_prosle_nabavke = ulaz_dan[i] - ulaz_dan[i - 1];
        stanje_plazme[i] = std::max((unsigned long long)0, stanje_plazme[i - 1] - proslo_dana_od_prosle_nabavke) + stanje_plazme[i];
        pojela_plazme[i] = std::min(stanje_plazme[i - 1], proslo_dana_od_prosle_nabavke);
        ps[i] = ps[i - 1] + pojela_plazme[i];
        if (ulaz_dan[i] == 0)
        {
            break;
        }
    }

    unsigned long long int pitanje;
    for (int i = 0; i < broj_pitanja; i++)
    {
        std::cin >> pitanje;
        if (pitanje < ulaz_dan[0])
        {
            std::cout << "0\n";
            continue;
        }
        int indeks = niz_veci(pitanje);

        if (pitanje == ulaz_dan[indeks])
        {
            std::cout << ps[indeks] << "\n";
        }
        else if (pitanje > ulaz_dan[indeks])
        {
            std::cout << (long long)ps[indeks] + std::min(stanje_plazme[indeks] + 1, pitanje - ulaz_dan[indeks]) << "\n";
        }
    }
    return 0;
}
long long int niz_veci(long long int trazeni_br)
{
    long long int start = 0;
    long long int end = broj_nabavki - 1;
    long long int najblizi = broj_nabavki;
    while (start <= end)
    {
        long long int indeks = (start + end) / 2;
        if (ulaz_dan[indeks] <= trazeni_br)
        {
            start = indeks + 1;
        }
        else
        {
            najblizi = indeks;
            end = indeks - 1;
        }
    }
    return najblizi - 1;
}