#include <bits/stdc++.h>
using namespace std;
int n, m;
bool used[200005] = {0};
int num[200005] = {0};
int s[550] = {0};
int rodn[550];
bool flag = false;
bool flag2 = false;
int res[550], resnum = 0;
bool tu[550];
vector<int> getnum[200005];
void dfs(int deep) {
  int i, j;
  if (flag) return;
  if (resnum == n / 2) {
    flag = true;
    printf("YES\n");
    for (i = 0; i < resnum; i++) {
      if (flag2)
        printf("%d -1 ", *getnum[res[i]].begin() + 1);
      else
        printf("-1 %d ", *getnum[res[i]].begin() + 1);
      getnum[res[i]].erase(getnum[res[i]].begin());
    }
    printf("\n");
  }
  if (deep >= n) return;
  int temp = s[deep % n] + s[(deep + 1) % n];
  if (used[temp] && num[temp] >= 1) {
    num[temp]--;
    res[resnum++] = temp;
    dfs(deep + 2);
    res[resnum--] = 0;
    num[temp]++;
  }
}
int main() {
  while (scanf("%d%d", &n, &m) != EOF) {
    int sum = 0;
    int i;
    int x1, y1, x2, y2;
    int be, en;
    scanf("%d%d", &x1, &y1);
    be = x1;
    en = y1;
    for (i = 1; i < n; i++) {
      scanf("%d%d", &x2, &y2);
      int templ = abs(x1 - x2) + abs(y1 - y2);
      sum += templ;
      s[i] = templ;
      x1 = x2;
      y1 = y2;
    }
    s[0] = abs(be - x1) + abs(en - y1);
    sum += s[0];
    int rod;
    int tempsum = 0;
    for (i = 0; i < m; i++) {
      scanf("%d", &rodn[i]);
      used[rodn[i]] = 1;
      num[rodn[i]]++;
      tempsum += rodn[i];
      getnum[rodn[i]].push_back(i);
    }
    if (tempsum < sum) {
      printf("NO\n");
      continue;
    }
    resnum = 0;
    dfs(1);
    flag2 = true;
    if (!flag) dfs(0);
    if (!flag) printf("NO\n");
  }
  return 0;
}
