N, M = map(int, input().split()) A = list(map(int, input().split())) graph = [[] for _ in range(N)] for _ in range(M): U, V = map(lambda x: int(x) - 1, input().split()) graph[U].append(V) graph[V].append(U) for bitset in range(1 << N): is_valid = True for i in range(N): sum_value = 0 for v in graph[i]: if (bitset >> v) & 1: sum_value += 1 if sum_value != A[i]: is_valid = False break if is_valid: print('Yes') print(*[(bitset >> i) & 1 for i in range(N)]) exit() print('No')