#include <bits/stdc++.h>

using namespace std;

const int long long MAX_N = 3000100;

int N,Q;
int long long dNizic[MAX_N],pNizic[MAX_N];
int long long sum[MAX_N], rezerva[MAX_N];

int long long binary(int long long key)
{
    int long long left = 0;
    int long long right = N-1;

    int long long rez = 0;

    while(left <= right)
    {
        int long long mid = (right + left) / 2;

        if(dNizic[mid] <= key)
        {
            rez = mid + 1;
            left = mid + 1;
        }
        else
        {
            right = mid - 1;
        }
    }

    return rez-1;
}

int long long rez(int long long k)
{
    int long long index = binary(k);

    if(index == -1)
    {
        return 0;
    }
    else
    {
        int long long dif = k - dNizic[index] + 1;
        if(dif <= rezerva[index])
        {
            return sum[index] + dif;
        }
        else
        {
            return sum[index] + rezerva[index];
        }
    }
}

int main()
{
    // Ulaz
    cin>>N>>Q;

    for(int i=0;i<N;i++)
    {
        cin>>dNizic[i]>>pNizic[i];
    }

    // Obrada
    for(int i=0;i<N;i++)
    {
        if(i==0)
        {
            sum[i] = 0;
            rezerva[i] = pNizic[i];
        }
        else
        {
            int long long dif = dNizic[i] - dNizic[i-1];

            if(dif <= rezerva[i-1])
            {
                sum[i] = sum[i-1] + dif;
                rezerva[i] = rezerva[i-1] - dif + pNizic[i];
            }
            else
            {
                sum[i] = sum[i-1] + rezerva[i-1];
                rezerva[i] = pNizic[i];
            }
        }
    }

    // Izlaz
    for(int i=0;i<Q;i++)
    {
        int long long k;
        cin>>k;
        cout<<rez(k)<<endl;
    }

    return 0;
}