#include <bits/stdc++.h>
using namespace std;
struct Point {
  int x, y;
  int mark;
} p[550];
struct Pod {
  int l;
  int mark;
  int mark2;
} pod[550], sortpod[550];
Pod que[550];
int qb, qe;
bool cmp(Pod a, Pod b) { return a.l < b.l; }
inline int Abs(int a) {
  if (a < 0) return -a;
  return a;
}
inline int Dist(int i, int j) {
  return Abs(p[i].x - p[j].x) + Abs(p[i].y - p[j].y);
}
int ans[550];
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%d %d", &p[i].x, &p[i].y);
    p[i].mark = i;
  }
  for (int i = 1; i <= m; i++) {
    scanf("%d", &pod[i].l);
    pod[i].mark = i;
    sortpod[i] = pod[i];
  }
  p[0] = p[n];
  p[n + 1] = p[1];
  qe = 0;
  for (int i = 1; i <= n; i += 2) {
    int len = Dist(i - 1, i) + Dist(i, i + 1);
    que[qe].l = len;
    que[qe].mark = i;
    qe++;
  }
  sort(que, que + qe, cmp);
  sort(sortpod + 1, sortpod + m + 1, cmp);
  int now = 1;
  bool f = true;
  for (int i = 0; i < qe; i++) {
    bool ff = false;
    for (; now <= m; now++)
      if (que[i].l == sortpod[now].l) {
        que[i].mark2 = sortpod[now].mark;
        now++;
        ff = true;
        break;
      }
    if (ff == false) {
      f = false;
      break;
    }
  }
  if (f == true) {
    for (int i = 1; i <= n; i++) ans[i] = -1;
    for (int i = 0; i < qe; i++) ans[que[i].mark] = que[i].mark2;
    puts("YES");
    for (int i = 1; i <= n; i++) {
      printf("%d%c", ans[i], i == n ? '\n' : ' ');
    }
    return 0;
  }
  qe = 0;
  for (int i = 2; i <= n; i += 2) {
    int len = Dist(i - 1, i) + Dist(i, i + 1);
    que[qe].l = len;
    que[qe].mark = i;
    qe++;
  }
  sort(que, que + qe, cmp);
  now = 1;
  f = true;
  for (int i = 0; i < qe; i++) {
    bool ff = false;
    for (; now <= m; now++)
      if (que[i].l == sortpod[now].l) {
        que[i].mark2 = sortpod[now].mark;
        now++;
        ff = true;
        break;
      }
    if (ff == false) {
      f = false;
      break;
    }
  }
  if (f == true) {
    for (int i = 1; i <= n; i++) ans[i] = -1;
    for (int i = 0; i < qe; i++) ans[que[i].mark] = que[i].mark2;
    puts("YES");
    for (int i = 1; i <= n; i++) {
      printf("%d%c", ans[i], i == n ? '\n' : ' ');
    }
    return 0;
  }
  puts("NO");
  return 0;
}
