from types import GeneratorType def bootstrap(f, stack=[]): def wrappedfunc(*args, **kwargs): if stack: return f(*args, **kwargs) to = f(*args, **kwargs) while True: if type(to) is GeneratorType: stack.append(to) to = next(to) else: stack.pop() if not stack: break to = stack[-1].send(to) return to return wrappedfunc @bootstrap def dfs(n, p): for v in G[n]: if v == p: continue A[n] += yield dfs(v, n) A[n] %= K diff = (B[n]-A[n])%K A[n] += diff A[n] %= K yield diff for _ in range(int(input())): 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) B = list(map(int, input().split())) A = [0]*N print("Yes" if dfs(0, -1) == 0 else "No")