#include <bits/stdc++.h>
bool debug = false;
using namespace std;
long long convertToNum(string s) {
  long long val = 0;
  for (int i = 0; i < (s.size()); i++) val = val * 10 + s[i] - '0';
  return val;
}
string convertToString(long long a) {
  string res = "";
  if (!a) return "0";
  while (a) {
    res = (char)(a % 10 + 48) + res;
    a /= 10;
  }
  return res;
}
long long GCD(long long x, long long y) {
  if (!x) return y;
  if (!y) return x;
  if (x == y) return x;
  if (x < y)
    return GCD(x, y % x);
  else
    return GCD(x % y, y);
}
long long POW(long long x, long long y, long long Base) {
  if (!y) return 1;
  long long u = POW(x, y / 2, Base);
  u = (u * u) % Base;
  if (y & 1)
    return (u * x) % Base;
  else
    return u;
}
const int tmp[24][6] = {
    {1, 2, 3, 4, 5, 6}, {1, 6, 3, 5, 2, 4}, {1, 4, 3, 2, 6, 5},
    {1, 5, 3, 6, 4, 2}, {2, 1, 4, 3, 6, 5}, {6, 1, 5, 3, 4, 2},
    {5, 1, 6, 3, 2, 4}, {4, 1, 2, 3, 5, 6}, {3, 2, 1, 4, 6, 5},
    {3, 5, 1, 6, 2, 4}, {3, 4, 1, 2, 5, 6}, {3, 6, 1, 5, 4, 2},
    {2, 3, 4, 1, 5, 6}, {4, 3, 2, 1, 6, 5}, {5, 3, 6, 1, 4, 2},
    {6, 3, 5, 1, 2, 4}, {2, 5, 4, 6, 1, 3}, {4, 6, 2, 5, 1, 3},
    {5, 4, 6, 2, 1, 3}, {6, 2, 5, 4, 1, 3}, {2, 6, 4, 5, 3, 1},
    {4, 5, 2, 6, 3, 1}, {5, 2, 6, 4, 3, 1}, {6, 4, 5, 2, 3, 1}};
vector<int> d[200003], b[200003];
pair<int, int> p[3000];
int a[3000], m, n, res[3000];
int main() {
  cin >> m >> n;
  for (int i = (1); i <= (m); i++) cin >> p[i].first >> p[i].second;
  for (int i = (1); i <= (n); i++) {
    cin >> a[i];
    d[a[i]].push_back(i);
  }
  p[0] = p[m];
  for (int i = (m + 1); i <= (2 * m); i++) p[i] = p[i - m];
  for (int i = (1); i <= (2); i++) {
    bool ok = true;
    for (int j = (1); j <= (200000); j++) b[j] = d[j];
    for (int j = (1); j <= (m); j++) res[j] = -1;
    for (int j = i; j <= i + m - 1; j += 2) {
      int cost = abs(p[j].first - p[j - 1].first) +
                 abs(p[j].second - p[j - 1].second) +
                 abs(p[j + 1].first - p[j].first) +
                 abs(p[j + 1].second - p[j].second);
      if (!(0 <= cost && cost <= 200000)) {
        ok = false;
        break;
      }
      if (!d[cost].size()) {
        ok = false;
        break;
      }
      res[j] = d[cost][d[cost].size() - 1];
      d[cost].pop_back();
    }
    if (ok) {
      cout << "YES" << endl;
      for (int j = (1); j <= (m); j++) cout << res[j] << " ";
      return 0;
    }
    for (int j = (1); j <= (200000); j++) d[j] = b[j];
  }
  cout << "NO" << endl;
  return 0;
}
