#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  vector<int> x(n);
  vector<int> y(n);
  for (int i = 0; i < n; i++) {
    scanf("%d %d", &x[i], &y[i]);
  }
  vector<int> pryt(m);
  for (int i = 0; i < m; i++) {
    scanf("%d", &pryt[i]);
  }
  vector<int> cop(m);
  for (int i = 0; i < m; i++) {
    cop[i] = pryt[i];
  }
  int a, b;
  if (x[0] == x[1]) {
    a = y[0] - y[1];
    if (a < 0) {
      a *= -1;
    }
    if (y[0] == y[n - 1]) {
      b = x[0] - x[n - 1];
      if (b < 0) {
        b *= -1;
      }
    } else if (y[0] != y[n - 1]) {
      printf("NO");
      return 0;
    }
  } else if (y[0] == y[1]) {
    a = x[0] - x[1];
    if (a < 0) {
      a *= -1;
    }
    if (x[0] == x[n - 1]) {
      b = y[0] - y[n - 1];
      if (b < 0) {
        b *= -1;
      }
    } else if (x[0] != x[n - 1]) {
      printf("NO");
      return 0;
    }
  } else {
    printf("NO");
    return 0;
  }
  vector<int> rez(n, -1);
  for (int i = 0; i < m; i++) {
    if (pryt[i] == a + b) {
      rez[0] = i + 1;
      pryt[i] = 0;
      break;
    }
  }
  int c;
  if (rez[0] != -1) {
    c = 1;
    for (int i = 2; i < n; i += 2) {
      if (x[i] == x[i + 1]) {
        a = y[i] - y[i + 1];
        if (a < 0) {
          a *= -1;
        }
        if (y[i] == y[i - 1]) {
          b = x[i] - x[i - 1];
          if (b < 0) {
            b *= -1;
          }
        } else if (y[i] != y[i - 1]) {
          printf("NO");
          return 0;
        }
      } else if (y[i] == y[i + 1]) {
        a = x[i] - x[i + 1];
        if (a < 0) {
          a *= -1;
        }
        if (x[i] == x[i - 1]) {
          b = y[i] - y[i - 1];
          if (b < 0) {
            b *= -1;
          }
        } else if (x[i] != x[i - 1]) {
          printf("NO");
          return 0;
        }
      } else {
        printf("NO");
        return 0;
      }
      for (int j = 0; j < m; j++) {
        if (pryt[j] == a + b) {
          rez[i] = j + 1;
          pryt[j] = 0;
          c++;
          break;
        }
      }
    }
  } else {
    c = 0;
    for (int i = 1; i < n; i += 2) {
      if (x[i] == x[i + 1]) {
        a = y[i] - y[i + 1];
        if (a < 0) {
          a *= -1;
        }
        if (y[i] == y[i - 1]) {
          b = x[i] - x[i - 1];
          if (b < 0) {
            b *= -1;
          }
        } else if (y[i] != y[i - 1]) {
          printf("NO");
          return 0;
        }
      } else if (y[i] == y[i + 1]) {
        a = x[i] - x[i + 1];
        if (a < 0) {
          a *= -1;
        }
        if (x[i] == x[i - 1]) {
          b = y[i] - y[i - 1];
          if (b < 0) {
            b *= -1;
          }
        } else if (x[i] != x[i - 1]) {
          printf("NO");
          return 0;
        }
      } else if (i != n - 1) {
        printf("NO");
        return 0;
      } else {
        if (x[0] == x[n - 1]) {
          a = y[0] - y[n - 1];
          if (a < 0) {
            a *= -1;
          }
          if (y[n - 1] == y[n - 2]) {
            b = x[n - 1] - x[n - 2];
            if (b < 0) {
              b *= -1;
            }
          } else if (y[n - 1] != y[n - 2]) {
            printf("NO");
            return 0;
          }
        } else if (y[0] == y[n - 1]) {
          a = x[0] - x[n - 1];
          if (a < 0) {
            a *= -1;
          }
          if (x[n - 2] == x[n - 1]) {
            b = y[n - 2] - y[n - 1];
            if (b < 0) {
              b *= -1;
            }
          } else if (x[n - 2] != x[n - 1]) {
            printf("NO");
            return 0;
          }
        } else {
          printf("NO");
          return 0;
        }
      }
      for (int j = 0; j < m; j++) {
        if (cop[j] == a + b) {
          rez[i] = j + 1;
          cop[j] = 0;
          c++;
          break;
        }
      }
    }
  }
  if (c == n / 2) {
    printf("YES\n");
    for (int i = 0; i < n; i++) {
      printf("%d%c", rez[i], ' ');
    }
  } else {
    printf("NO");
  }
  return 0;
}
