T = int(input()) for _ in range(T): N, M, K = map(int, input().split()) g = [[] for _ in range(N)] for _ in range(M): u, v = map(int, input().split()) u, v = u - 1, v - 1 g[u].append(v) g[v].append(u) A = [0] * N B = list(map(int, input().split())) s = -1 for i in range(N): if len(g[i]) == 1: s = i assert s != -1 stack = [s] vis = [False] * N vis[s] = True while stack: u = stack.pop() if A[u] > B[u]: B[u] += K cnt = B[u] - A[u] found = False for v in g[u]: if not vis[v]: found = True A[v] += cnt A[v] %= K vis[v] = True stack.append(v) if not found and cnt > 0: print('No') break else: print('Yes')