#include <bits/stdc++.h>
using namespace std;
long long d[300005]; 
long long p[300005];  
long long q[300005];
unsigned long long prefiks[300005]; 
int n;
int binarna(int trg) {
    int levo = 0, desno = n - 1;
    int rez = -1; 
    while (levo <= desno) {
        int sredina = levo + (desno - levo) / 2;
        if (d[sredina] < trg) {
            rez = sredina;
            levo = sredina + 1; 
        } else {
            desno = sredina - 1;
        }
    }
    return rez;
}
void solve() {
    int Q;
    cin >> n >> Q; 
    for (int i = 0; i < n; i++) {
        cin >> d[i] >> p[i];
    }
    for (int i = 0; i < Q; i++) {
        cin >> q[i];
    }
    prefiks[0] = min(p[0], d[1] - d[0]);
    for (int i = 1; i < n; i++) {
        prefiks[i] = prefiks[i - 1] + min(p[i], d[i + 1] - d[i]);
    }
    for (int i = 0; i < Q; i++) {
        unsigned long long ans;
        int idx = binarna(q[i]);
        if (idx < 0) {
            ans = 0;
        } else {
            ans = prefiks[idx];
            if (q[i] > d[idx]) {
                ans += min(q[i] - d[idx], p[idx]);
            }
        }
        cout << ans % 1000000007 << endl;
    }
}

int main() {
    solve();
    return 0;
}