import sys input = sys.stdin.readline sys.setrecursionlimit(10**8) def solve(N,M,K,UV,B): es = [[] for _ in range(N)] for u,v in UV: u,v = u-1,v-1 es[u].append(v) es[v].append(u) A = [0] * N def rec(v,p=-1): for to in es[v]: if to==p: continue A[v] += rec(to,v) A[v] %= K ret = (B[v] - A[v]) % K return ret rec(0) return 'Yes' if A[0]==B[0] else 'No' T = int(input()) for _ in range(T): N,M,K = map(int,input().split()) UV = [tuple(map(int,input().split())) for _ in range(M)] B = list(map(int,input().split())) print(solve(N,M,K,UV,B))