#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const int INF=numeric_limits<int>::max();


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n,t;
    cin>>n>>t;
    vector<int> d(n);
    vector<int> p(n);
    for(int i=0;i<n;i++)cin>>d[i]>>p[i];
    vector<int> q(t);
    for(int i=0;i<t;i++)cin>>q[i];
    vector< vector<int> > v(n);
    vector<vector<int> > b(n);
    for(int i=0;i<n;i++)v[i].resize(0);

    for(int i=0;i<n;i++){
        if(p[i]==0)continue;

        int x=max(d[i]-1,0)/p[i];
        if(i+x-1>=n)continue;

        v[i+x].push_back(i);


    }

    int sump=0;
    /*
    for(int i=0;i<n;i++){
        for(int j=0;j<v[i].size();j++)cout<<v[i][j]<<' ';
        cout<<endl;
    }*/
    vector<int> ans(n+1,0);
    for(int i=1;i<n+1;i++){
        ans[i]=ans[i-1]+d[i-1]+sump;
        for (int j=0;j<v[i-1].size();j++){
            int x=v[i-1][j];
            ans[i]-=d[x];
            ans[i]+=(i-x)*p[x];
            sump+=p[x];
        }
    }/*
    for(int i=0;i<n+1;i++)cout<<ans[i]<<' ';
    cout<<endl;*/
    for(int i=0;i<t;i++){

        if(lower_bound(ans.begin(),ans.end(),q[i])==ans.end())cout<<-1<<endl;
        else {
            cout<<distance(ans.begin(),lower_bound(ans.begin(),ans.end(),q[i]))<<endl;
        }
    }


    return 0;
}