#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;
}
}