#include using namespace std; typedef long long ll; typedef pair P; #define REP(i,n) for(ll i=0;i> N >> M; vector a(N+1); for(i=1;i<=N;i++) cin >> a[i]; if(M==0){ for(i=1;i<=N;i++){ if(a[i]>1){ cout << "No" << endl; return 0; } } for(i=1;i<=N;i++) cout << a[i] << ' '; cout << endl; return 0; } map> m; for(i=1;i<=M;i++){ ll U,V; cin >> U >> V; m[U].push_back(V); m[V].push_back(U); } vector ans; for(i=0;i<(1LL< d(N+1,0); for(j=0;j v=x.second; ll n=v.size(); ll s=0; REP(k,n) s+=d[v[k]]; if(a[p]!=s){ f=false; break; } } if(f){ ans=d; break; } } if((ll)ans.size()==0) cout << "No" << endl; else{ cout << "Yes" << endl; for(i=1;i<=N;i++) cout << ans[i] << ' '; cout << endl; } return 0; }