N,M = map(int, input().split()) A = [0]+list(map(int, input().split())) G = {i:[] for i in range(1,N+1)} for _ in range(M): u,v = map(int, input().split()) G[u].append(v) G[v].append(u) for pat in range(1<>(j-1) & 1: cnt += 1 if cnt != A[i]: flag = False break if flag: apat = pat break if not flag: print("No") else: print("Yes") print(" ".join(list(bin(apat)[2:].zfill(N))[::-1]))