#include <bits/stdc++.h>
using namespace std;
long long tree[800005];
void update(long long node, long long b, long long e, long long i,
            long long j) {
  if (b == e) {
    tree[node] = i;
    return;
  }
  int mid = (b + e) / 2;
  if (j <= mid)
    update(node * 2 + 1, b, mid, i, j);
  else
    update(node * 2 + 2, mid + 1, e, i, j);
  tree[node] = tree[node * 2 + 1] + tree[node * 2 + 2];
}
long long query(long long node, long long b, long long e, long long i,
                long long j) {
  if (i > j || tree[node] == 0) return -1;
  if (b == e) return b;
  long long mid = (b + e) / 2;
  if (j <= mid)
    return query(node * 2 + 1, b, mid, i, j);
  else if (mid < i)
    return query(node * 2 + 2, mid + 1, e, i, j);
  else {
    long long v = query(node * 2 + 1, b, mid, i, j);
    if (v != -1) return v;
    return query(node * 2 + 2, mid + 1, e, i, j);
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  memset(tree, 0, sizeof tree);
  long long n, m;
  cin >> n >> m;
  pair<long long, long long> data[n + 10];
  for (int i = 0; i < n; i++) {
    cin >> data[i].first >> data[i].second;
  }
  pair<pair<long long, long long>, int> lis[n + 10];
  for (int i = 1; i < n; i++) {
    lis[i - 1].first.second = data[i].first - data[i - 1].second;
    lis[i - 1].first.first = data[i].second - data[i - 1].first;
    lis[i - 1].second = i - 1;
  }
  pair<long long, long long> b[m + 10];
  for (int i = 0; i < m; i++) {
    cin >> b[i].first;
    b[i].second = i;
  }
  sort(lis, lis + n - 1);
  sort(b, b + m);
  for (int i = 0; i < n - 1; i++) swap(lis[i].first.second, lis[i].first.first);
  for (int i = 0; i < m; i++) {
    update(0, 0, m - 1, 1, i);
  }
  int res[n + 10];
  for (int i = 0; i < n - 1; i++) {
    int lo = lower_bound(b, b + m, make_pair(lis[i].first.first, 0LL)) - b;
    int hi =
        upper_bound(b, b + m, make_pair(lis[i].first.second, 300000LL)) - b - 1;
    int v = query(0, 0, m - 1, lo, hi);
    if (v == -1) {
      puts("No");
      return 0;
    }
    res[lis[i].second] = b[v].second + 1;
    update(0, 0, m - 1, 0, v);
  }
  cout << "Yes\n";
  for (int i = 0; i < n - 1; i++) cout << res[i] << " ";
  return 0;
}
