#include <bits/stdc++.h>
using namespace std;
vector<int> pr1[220000], pr2[220000];
int x[512], y[512], r[512];
inline int abs(int x) { return x > 0 ? x : -x; }
inline int d(int i, int j) { return abs(x[i] - x[j]) + abs(y[i] - y[j]); }
int main() {
  int n, m, l, i;
  cin >> n >> m;
  for (i = 0; i < n; ++i) scanf("%d%d", x + i, y + i);
  for (i = 1; i <= m; ++i) {
    scanf("%d", &l);
    pr1[l].push_back(i);
    pr2[l].push_back(i);
  }
  memset(r, -1, sizeof(r));
  for (i = 1; i < n; i += 2) {
    l = d(i - 1, i) + d(i, (i + 1) % n);
    if (pr1[l].size() == 0) break;
    r[i] = pr1[l].back();
    pr1[l].pop_back();
  }
  if (i >= n) {
    cout << "YES\n" << r[0];
    for (i = 1; i < n; ++i) cout << ' ' << r[i];
    cout << '\n';
    return 0;
  }
  memset(r, -1, sizeof(r));
  for (i = 0; i < n - 1; i += 2) {
    l = d((i + n - 1) % n, i) + d(i, i + 1);
    if (pr2[l].size() == 0) break;
    r[i] = pr2[l].back();
    pr2[l].pop_back();
  }
  if (i >= n - 1) {
    cout << "YES\n" << r[0];
    for (i = 1; i < n; ++i) cout << ' ' << r[i];
    cout << '\n';
    return 0;
  }
  cout << "NO\n";
  return 0;
}
