#include <bits/stdc++.h>   using namespace std;   int abs(int x) {     if (x < 0) return -x;     return x;   }   int n, m;   int x[500], y[500], l[500];   bool used[500];   int placed[500];   int dist(int i, int j) { return abs(x[i] - x[j]) + abs(y[i] - y[j]); }   int main() {     cin >> n >> m;     for (int i = 0; i < n; i++) cin >> x[i] >> y[i];     for (int i = 0; i < m; i++) cin >> l[i];     if (2 * m + 1 < n || n % 2 == 1) {       cout <<  NO  << endl;       return 0;     }     bool good = true;     for (int k = 0; k < 2; k++) {       if (k == 1 && good) break;       good = true;       memset(used, 0, 500 * sizeof(used[0]));       for (int i = 0; i < n; i++) placed[i] = -2;       for (int i = k; i < n; i += 2) {         int len = dist(i, (i - 1 + n) % n) + dist(i, (i + 1) % n);         bool match = false;         for (int j = 0; j < m; j++) {           if (!used[j] && l[j] == len) {             used[j] = 1;             placed[i] = j;             match = true;             break;           }         }         if (!match) {           good = false;           break;         }       }     }     if (!good)       cout <<  NO  << endl;     else {       cout <<  YES  << endl;       cout << placed[0] + 1;       for (int i = 1; i < n; i++) cout <<     << placed[i] + 1;       cout << endl;     }     return 0;   }   