T = int(input()) for _ in range(T): N,M,K = map(int,input().split()) connected = [[] for _ in range(N)] for _ in range(M): u,v = map(lambda x:int(x)-1,input().split()) connected[u].append(v) connected[v].append(u) B = list(map(int,input().split())) if N == 1: if B[0] == 0: print("Yes") else: print("No") continue visited = [False]*N color = [-1]*N flag = False #奇閉路あるか? stack = [0] visited[0] = True color[0] = 0 while stack: v = stack.pop() for u in connected[v]: if not visited[u]: visited[u] = True stack.append(u) color[u] = 1-color[v] else: if color[u] == color[v]: flag = True break #print("奇閉路あるか?",flag) #print(visited) #print(color) if flag: print("Yes") else: black_sum = 0 white_sum = 0 for i in range(N): if color[i] == 0: black_sum += B[i] else: white_sum += B[i] if black_sum % K == white_sum % K: print("Yes") else: print("No")