#include <bits/stdc++.h>
using namespace std;
vector<pair<pair<long long, long long>, int> > island;
set<pair<long long, long long> > bridge;
int ans[200100];
int main() {
  int n, m;
  long long l, r, prevl, prevr, a;
  cin >> n >> m;
  cin >> prevl >> prevr;
  for (int i = 1; i < n; i++) {
    cin >> l >> r;
    island.push_back(pair<pair<long long, long long>, int>(
        pair<long long, long long>(r - prevl, l - prevr), i - 1));
    prevl = l;
    prevr = r;
  }
  sort(island.begin(), island.end());
  for (int i = 0; i < m; i++) {
    cin >> a;
    bridge.insert(pair<long long, long long>(a, i + 1));
  }
  bridge.insert(pair<long long, long long>(1e19, -1));
  set<pair<long long, long long> >::iterator point;
  long long lastl, lastr;
  int idx;
  for (vector<pair<pair<long long, long long>, int> >::iterator it =
           island.begin();
       it != island.end(); ++it) {
    lastr = it->first.first;
    lastl = it->first.second;
    idx = it->second;
    point = bridge.lower_bound(pair<long long, long long>(lastl, -1));
    if (point->first > lastr) {
      cout << "No";
      return 0;
    } else {
      ans[idx] = point->second;
      bridge.erase(point);
    }
  }
  cout << "Yes\n";
  for (int i = 0; i < n - 1; i++) {
    cout << ans[i] << " ";
  }
  return 0;
}
