#include <bits/stdc++.h>
using namespace std;
struct node {
  int n, b;
  long long l;
  long long r;
  bool operator<(const node &x) const {
    if (r == x.r) return l > x.l;
    return r > x.r;
  }
};
struct bri {
  int n;
  long long l;
  bool operator<(const bri &x) const { return l < x.l; }
};
bool cmp1(node a, node b) {
  if (a.l == b.l) return a.r < b.r;
  return a.l < b.l;
}
bool cmp2(node a, node b) { return a.n < b.n; }
int n, m;
node nod[200010];
bri b[200010];
priority_queue<node> que;
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> m;
  if (m < n - 1) {
    cout << "No" << endl;
    return 0;
  }
  long long lo, hi, le, ri;
  for (int i = 0; i < n; i++) {
    cin >> lo >> hi;
    if (i) {
      nod[i].n = i;
      nod[i].l = lo - ri;
      nod[i].r = hi - le;
    }
    le = lo;
    ri = hi;
  }
  for (int i = 1; i <= m; i++) {
    cin >> b[i].l;
    b[i].n = i;
  }
  sort(b + 1, b + m + 1);
  sort(nod + 1, nod + n, cmp1);
  int p = 1, q = 1;
  ;
  for (int i = 1; i <= m; i++) {
    while (b[i].l >= nod[p].l && p < n) {
      que.push(nod[p]);
      p++;
    }
    while (!que.empty() && que.top().r < b[i].l) que.pop();
    if (!que.empty()) {
      node no = que.top();
      nod[no.n].b = b[i].n;
      q++;
      que.pop();
    }
  }
  if (q == n) {
    cout << "Yes" << endl;
    for (int i = 1; i < n; i++) cout << nod[i].b << " ";
  } else
    cout << "No" << endl;
  return 0;
}
