#include <bits/stdc++.h>
using namespace std;
int abs(int x) {
  if (x < 0) return -x;
  return x;
}
int n, m;
int x[500], y[500], l[500];
bool used[500];
int placed[500];
int dist(int i, int j) { return abs(x[i] - x[j]) + abs(y[i] - y[j]); }
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> x[i] >> y[i];
  for (int i = 0; i < m; i++) cin >> l[i];
  if (2 * m + 1 < n || n % 2 == 1) {
    cout << "NO" << endl;
    return 0;
  }
  bool good = true;
  for (int k = 0; k < 2; k++) {
    if (k == 1 && good) break;
    good = true;
    memset(used, 0, 500 * sizeof(used[0]));
    for (int i = 0; i < n; i++) placed[i] = -2;
    for (int i = k; i < n; i += 2) {
      int len = dist(i, (i - 1 + n) % n) + dist(i, (i + 1) % n);
      bool match = false;
      for (int j = 0; j < m; j++) {
        if (!used[j] && l[j] == len) {
          used[j] = 1;
          placed[i] = j;
          match = true;
          break;
        }
      }
      if (!match) {
        good = false;
        break;
      }
    }
  }
  if (!good)
    cout << "NO" << endl;
  else {
    cout << "YES" << endl;
    cout << placed[0] + 1;
    for (int i = 1; i < n; i++) cout << " " << placed[i] + 1;
    cout << endl;
  }
  return 0;
}
