#include <bits/stdc++.h>   using namespace std;   const int maxn = 200010;   set<pair<long long, long long> > st;   int resp[maxn];   struct island {     long long ini, fim;   } isl[maxn];   struct event {     long long type, val, ini;     event() { type = 0, val = 0, ini = 0; }     event(long long a, long long b, long long c) {       type = a;       val = b;       ini = c;     }   } e[2 * maxn];   bool cmp(event a, event b) {     if (a.ini == b.ini && a.type == b.type) return a.val < b.val;     if (a.ini == b.ini) return a.type < b.type;     return a.ini < b.ini;   }   int main() {     int n, m;     scanf( %d %d , &n, &m);     long long al, bl;     int siz = 0;     for (int i = 0; i < n; i++) {       long long a, b;       scanf( %I64d %I64d , &a, &b);       if (i != 0) {         isl[i - 1].fim = b - al;         isl[i - 1].ini = a - bl;         int atual = i - 1;         e[siz++] = event(1, atual, isl[i - 1].ini);       }       al = a;       bl = b;     }     for (int i = 0; i < m; i++) {       long long q;       scanf( %I64d , &q);       e[siz++] = event(2, i, q);     }     sort(e, e + siz, cmp);     for (int i = 0; i < siz; i++) {       if (e[i].type == 1) {         st.insert(make_pair(isl[e[i].val].fim, e[i].val));       } else {         set<pair<long long, long long> >::iterator it =             st.lower_bound(make_pair(e[i].ini, -1LL));         if (it != st.end()) {           resp[it->second] = e[i].val;           st.erase(it);         }       }     }     int ok = 1;     if (!st.empty()) ok = 0;     if (ok) {       puts( Yes );       for (int i = 0; i < n - 1; i++) {         printf( %d  , resp[i] + 1);       }       printf(  n );     } else {       puts( No );     }   }   