class dsu: n = 1 parent_or_size = [-1 for i in range(n)] def __init__(self, N): self.n = N self.parent_or_size = [-1 for i in range(N)] def merge(self, a, b): assert 0 <= a < self.n, "0<=a 0: result2.append(result[i]) return result2 T=int(input()) for _ in range(T): N,M,K=map(int,input().split()) edge=[tuple(map(int,input().split())) for i in range(M)] B=list(map(int,input().split())) for i in range(N): B.append(-B[i]) uf=dsu(N*2) for i in range(M): uf.merge(edge[i][0]-1,edge[i][1]-1+N) uf.merge(edge[i][0]-1+N,edge[i][1]-1) cnt=[0]*(N*2) for i in range(N*2): cnt[uf.leader(i)]+=B[i] for i in range(N*2): cnt[i]%=K if sum(cnt)==0: print("Yes") else: print("No")