#include <bits/stdc++.h>
using namespace std;
const long long inf = 0x3f3f3f3f3f3f3f3f;
const long long mod = 998244353;
int n, m;
long long x[200010], y[200010];
pair<long long, int> a[200010];
int ans[200010];
struct Node {
  long long l, r;
  int p;
  bool operator<(const Node &y) const { return r > y.r; }
} t[200010];
bool cmp1(Node &x, Node &y) { return x.l < y.l; }
priority_queue<Node> q;
int main() {
  scanf("%d%d", &n, &m);
  scanf("%lld%lld", &x[1], &y[1]);
  for (int i = 1; i < n; i++) {
    scanf("%lld%lld", &x[i + 1], &y[i + 1]);
    t[i].l = x[i + 1] - y[i];
    t[i].r = y[i + 1] - x[i];
    t[i].p = i;
  }
  sort(t + 1, t + n, cmp1);
  for (int i = 1; i <= m; i++) scanf("%lld", &a[i].first), a[i].second = i;
  sort(a + 1, a + m + 1);
  int pos = 1;
  for (int i = 1; i <= m; i++) {
    while (t[pos].l <= a[i].first && pos < n) {
      q.push(t[pos]);
      pos++;
    }
    if (!q.empty()) {
      if (q.top().r >= a[i].first) {
        ans[q.top().p] = a[i].second;
        q.pop();
      } else {
        break;
      }
    }
  }
  if (q.empty() && pos == n) {
    puts("Yes");
    for (int i = 1; i < n; i++) printf("%d ", ans[i]);
  } else
    puts("No");
  return 0;
}
