#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <class T>
inline bool isPrime(T n) {
  if (n <= 1) return false;
  for (T i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return true;
}
template <class T>
inline T Mod(T n, T m) {
  return (n % m + m) % m;
}
template <class T>
string toString(T n) {
  ostringstream oss;
  oss << n;
  oss.flush();
  return oss.str();
}
int toInt(string s) {
  int r = 0;
  istringstream sin(s);
  sin >> r;
  return r;
}
long long toLl(string s) {
  long long r = 0;
  istringstream sin(s);
  sin >> r;
  return r;
}
template <class T>
void debug(const T& e) {
  cout << e << endl;
}
template <class T1, class T2>
void debug(const T1& e1, const T2& e2) {
  cout << e1 << "\t" << e2 << endl;
}
template <class T1, class T2, class T3>
void debug(const T1& e1, const T2& e2, const T3& e3) {
  cout << e1 << "\t" << e2 << "\t" << e3 << endl;
}
template <class T1, class T2, class T3, class T4>
void debug(const T1& e1, const T2& e2, const T3& e3, const T4& e4) {
  cout << e1 << "\t" << e2 << "\t" << e3 << "\t" << e4 << endl;
}
template <class T1, class T2, class T3, class T4, class T5>
void debug(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
           const T5& e5) {
  cout << e1 << "\t" << e2 << "\t" << e3 << "\t" << e4 << "\t" << e5 << endl;
}
template <class T>
void debug(vector<T>& e) {
  int i;
  for (i = 0; i < SZ(e); i++) cout << e[i] << " ";
  cout << endl;
}
template <class T>
void debug(vector<basic_string<T> >& e) {
  int i, j;
  for (i = 0; i < SZ(e); i++) {
    for (j = 0; j < SZ(e[i]); j++) cout << e[i][j];
    cout << endl;
  }
  cout << endl;
}
template <class T>
void debug(vector<vector<T> >& e, int row, int col) {
  int i, j;
  for (i = 0; i < row; i++) {
    for (j = 0; j < col; j++) cout << e[i][j] << "\t";
    cout << endl;
  }
  cout << endl;
}
template <class T>
void debug(T e[100][100], int row, int col) {
  int i, j;
  for (i = 0; i < row; i++) {
    for (j = 0; j < col; j++) cout << e[i][j] << " ";
    cout << endl;
  }
}
long long Pow(long long B, long long P) {
  long long R = 1;
  while (P > 0) {
    if (P % 2 == 1) R = (R * B);
    P /= 2;
    B = (B * B);
  }
  return R;
}
int l[10001], x[10001], y[10001], sett[10001], flag[10001];
int main() {
  int i, n, res, sum, j, m, dis, dis1, s, ss;
  while (scanf("%d%d", &n, &m) == 2) {
    s = ss = 0;
    scanf("%d%d", &x[0], &y[0]);
    sum = res = 0;
    for (i = 1; i < n; i++) {
      scanf("%d%d", &x[i], &y[i]);
      sum += (abs(x[i] - x[i - 1]) + abs(y[i] - y[i - 1]));
    }
    memset(sett, 0, sizeof(sett));
    memset(flag, 0, sizeof(flag));
    for (i = 0; i < m; i++) {
      scanf("%d", &l[i]);
      res += l[i];
    }
    if (res < sum)
      printf("NO\n");
    else {
      memset(sett, 0, sizeof(sett));
      memset(flag, 0, sizeof(flag));
      for (i = 0; i < n; i += 2) {
        if (i == 0) {
          dis = (abs(x[i] - x[i + 1]) + abs(y[i] - y[i + 1]));
          dis1 = (abs(x[i] - x[n - 1]) + abs(y[i] - y[n - 1]));
        } else {
          dis = (abs(x[i] - x[i + 1]) + abs(y[i] - y[i + 1]));
          dis1 = (abs(x[i] - x[i - 1]) + abs(y[i] - y[i - 1]));
        }
        dis = dis + dis1;
        for (j = 0; j < m; j++) {
          if (l[j] == dis && flag[j] == 0) {
            sett[i] = j + 1;
            flag[j] = 1;
            break;
          }
        }
        if (j == m) {
          s = 1;
          break;
        }
      }
      if (s == 0) {
        printf("YES\n");
        if (sett[0] > 0)
          printf("%d", sett[0]);
        else
          printf("-1");
        for (i = 1; i < n; i++) {
          if (sett[i] > 0)
            printf(" %d", sett[i]);
          else
            printf(" -1");
        }
        printf("\n");
      } else {
        memset(sett, 0, sizeof(sett));
        memset(flag, 0, sizeof(flag));
        for (i = 1; i < n; i += 2) {
          if (i == n - 1) {
            dis = (abs(x[i] - x[i - 1]) + abs(y[i] - y[i - 1]));
            dis1 = (abs(x[i] - x[0]) + abs(y[i] - y[0]));
          } else {
            dis = (abs(x[i] - x[i + 1]) + abs(y[i] - y[i + 1]));
            dis1 = (abs(x[i] - x[i - 1]) + abs(y[i] - y[i - 1]));
          }
          dis = dis + dis1;
          for (j = 0; j < m; j++) {
            if (l[j] == dis && flag[j] == 0) {
              sett[i] = j + 1;
              flag[j] = 1;
              break;
            }
          }
          if (j == m) {
            ss = 1;
            break;
          }
        }
        if (ss == 0) {
          printf("YES\n");
          if (sett[0] > 0)
            printf("%d", sett[0]);
          else
            printf("-1");
          for (i = 1; i < n; i++) {
            if (sett[i] > 0)
              printf(" %d", sett[i]);
            else
              printf(" -1");
          }
          printf("\n");
        }
      }
      if (s == 1 && ss == 1) printf("NO\n");
    }
  }
  return 0;
}
