#include <bits/stdc++.h>
using namespace std;
const int MAX = 2e5 + 5;
int n, m, ans[MAX];
struct par {
  long long x, y;
  int id;
  bool operator<(const par &p) const {
    if (y != p.y) return y < p.y;
    return x < p.x;
  }
} e[MAX];
struct data {
  long long x;
  int id;
  data(long long x, int id) : x(x), id(id) {}
  bool operator<(const data &d) const { return x < d.x; }
};
multiset<data> s;
int main() {
  scanf("%d%d", &n, &m);
  long long c, d;
  for (int i = 1; i <= n; i++) {
    long long a, b;
    scanf("%I64d%I64d", &a, &b);
    if (i > 1) {
      e[i - 1].x = a - d;
      e[i - 1].y = b - c;
      e[i - 1].id = i - 1;
    }
    c = a, d = b;
  }
  for (int i = 1; i <= m; i++) {
    long long x;
    scanf("%I64d", &x);
    s.insert(data(x, i));
  }
  sort(e + 1, e + n);
  for (int i = 1; i < n; i++) {
    auto it = s.lower_bound(data(e[i].x, 0));
    if (it == s.end() || it->x > e[i].y) {
      printf("No\n");
      return 0;
    }
    ans[e[i].id] = it->id;
    s.erase(it);
  }
  printf("Yes\n");
  for (int i = 1; i < n; i++) {
    printf("%d", ans[i]);
    printf(i == n - 1 ? "\n" : " ");
  }
  return 0;
}
