#include <bits/stdc++.h>
using namespace std;
int n, m;
int rod;
int x[505], y[505];
bool used[200005];
vector<int> num[200005];
vector<int> tmp[200005];
vector<int>::iterator itor;
int res[505], resnum;
void solve() {
  int i, j;
  for (i = 0; i < 200005; i++) {
    tmp[i] = num[i];
  }
  resnum = 0;
  for (i = 0; i < n - 1; i += 2) {
    int len = abs(x[(i - 1 + n) % n] - x[i]) + abs(y[(i - 1 + n) % n] - y[i]) +
              abs(x[i] - x[i + 1]) + abs(y[i] - y[i + 1]);
    if (used[len] && !tmp[len].empty()) {
      itor = tmp[len].end();
      itor--;
      res[resnum++] = *itor;
      tmp[len].pop_back();
    } else
      break;
  }
  if (resnum == n / 2) {
    printf("YES\n");
    for (i = 0; i < resnum; i++) printf("%d -1 ", res[i] + 1);
    printf("\n");
    return;
  }
  resnum = 0;
  for (i = 1; i < n; i += 2) {
    int len = abs(x[i - 1] - x[i]) + abs(y[i - 1] - y[i]) +
              abs(y[i] - y[(i + 1) % n]) + abs(x[i] - x[(i + 1) % n]);
    if (used[len] && !num[len].empty()) {
      itor = num[len].end();
      itor--;
      res[resnum++] = *itor;
      num[len].pop_back();
    } else
      break;
  }
  if (resnum == n / 2) {
    printf("YES\n");
    for (i = 0; i < resnum; i++) printf("-1 %d ", res[i] + 1);
    printf("\n");
    return;
  }
  printf("NO\n");
}
int main() {
  while (scanf("%d%d", &n, &m) != EOF) {
    int i, j;
    for (i = 0; i < n; i++) scanf("%d%d", &x[i], &y[i]);
    for (i = 0; i < m; i++) {
      scanf("%d", &rod);
      used[rod] = 1;
      num[rod].push_back(i);
    }
    solve();
  }
  return 0;
}
