#include<bits/stdc++.h>
using namespace std;
struct node{
    long long  mi,ma,index;
    bool operator < (node a){
        return mi<a.mi;
    }
};
struct st{
    long long  value,id;
    st(){}
    st(long long  x,long long  y){
        value=x;
        id=y;
    }
    bool operator <(const st& a)const {
        return value>a.value;
    }
};
node dis[200004];
int ans[200005];
priority_queue<st>a;
int main(){
    freopen("1.txt","r",stdin);
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n,m;
    long long  l1,r1,l2,r2;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>l1>>r1;
        if(i!=1){
            dis[i-1].mi=l1-r2;
            dis[i-1].ma=r1-l2;
            dis[i-1].index=i-1;
        }
        r2=r1;
        l2=l1;
    }
    for(int i=1;i<=m;i++){
        long long  x;
        cin>>x;
        a.push(st(x,i));
    }
    sort(dis+1,dis+n);
    int i;
    for(i=1;i<n;i++){
        while(a.top().value<dis[i].mi&&!a.empty()) a.pop();
        if(a.empty()) break;
        if(a.top().value>dis[i].ma) break;

        ans[dis[i].index]=a.top().id;
        a.pop();
    }
    if(i<n) {cout<<"No"<<endl;return 0;}
    cout<<"Yes"<<endl;
    for(int i=1;i<n;i++){
        cout<<ans[i];
        if(i!=n-1)cout<<' ';
        else cout<<endl;
    }
}