#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
int n, m;
pair<int, int> a[512];
set<pair<int, int> > b;
int res[512];
int dist(int i, int j) {
  return abs(a[i].first - a[j].first) + abs(a[i].second - a[j].second);
}
bool solve(int sh, set<pair<int, int> > b) {
  memset(res, -1, sizeof res);
  ;
  for (int ii = 0, _n = (n / 2); ii < _n; ii++) {
    int i = (ii * 2 + sh) % n;
    int len = dist(i, (i + 1) % n) + dist(i, (i + n - 1) % n);
    set<pair<int, int> >::iterator it = b.lower_bound(pair<int, int>(len, -1));
    if (it == b.end() || it->first != len) return false;
    res[i] = it->second + 1;
    b.erase(it);
  }
  printf("YES\n");
  for (int i = 0, _n = (n); i < _n; i++) printf(" %d" + (i == 0), res[i]);
  printf("\n");
  return true;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0, _n = (n); i < _n; i++) {
    scanf("%d%d", &a[i].first, &a[i].second);
  }
  for (int i = 0, _n = (m); i < _n; i++) {
    int x;
    scanf("%d", &x);
    b.insert(pair<int, int>(x, i));
  }
  if (!solve(0, b) && !solve(1, b)) printf("NO\n");
  return 0;
}
