#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 7;
set<pair<long long, int> > num;
int ans[maxn];
typedef struct node {
  long long l, r;
  int pos;
} Node;
Node p[maxn];
bool cmp(Node a, Node b) {
  if (a.r == b.r)
    return a.l < b.l;
  else
    return a.r < b.r;
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%lld%lld", &p[i].l, &p[i].r);
  }
  for (int i = 1; i < n; i++) {
    long long tl = p[i].l, tr = p[i].r;
    p[i].r = p[i + 1].r - tl;
    p[i].l = p[i + 1].l - tr;
    p[i].pos = i;
  }
  sort(p + 1, p + n, cmp);
  for (int i = 1; i <= m; i++) {
    long long tem;
    scanf("%lld", &tem);
    num.insert(make_pair(tem, i));
  }
  int flag = 0;
  for (int i = 1; i < n; i++) {
    set<pair<long long, int> >::iterator it;
    it = num.lower_bound(make_pair(p[i].l, 0));
    if (it == num.end() || (it->first) > p[i].r) {
      flag = 1;
      break;
    }
    ans[p[i].pos] = (it->second);
    num.erase(it);
  }
  if (flag)
    puts("No");
  else {
    puts("Yes");
    for (int i = 1; i < n; i++) {
      printf("%d ", ans[i]);
    }
    printf("\n");
  }
}
