def main(): n, m, b = list(map(int, input().split())) node = [[] for _ in range(n)] X = [-1] * n E = [list(map(int, input().split())) for _ in range(m)] for i in range(m): E[i][0] -= 1 E[i][1] -= 1 node = [[] for _ in range(n)] for u, v, c in E: node[u].append((v, c)) node[v].append((u, c)) for i in range(n): if X[i] != -1: continue for j in range(b): X[i] = j C = set([i]) S = [i] f = 1 while S and f: now = S.pop() for nxt, c in node[now]: if nxt in C: if (X[now] + X[nxt]) % b != c: f = 0 break else: X[nxt] = (c-X[now]) % b S.append(nxt) C.add(nxt) if f: break else: return [] return X Ans = main() if not Ans: print("No") else: print("Yes") print(*Ans)