import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int T = s.nextInt(); for (int t = 0; t < T; t++) { int n = s.nextInt(); int m = s.nextInt(); long k = s.nextInt(); ArrayList> list = new ArrayList<>(); for (int i = 0; i < n; i++) { list.add(new ArrayList<>()); } for (int i = 0; i < m; i++) { int u = s.nextInt()-1; int v = s.nextInt()-1; list.get(u).add(v); list.get(v).add(u); } long[] A = new long[n]; long[] b = new long[n]; for (int i = 0; i < n; i++) { b[i] = s.nextInt(); } record a(int x, int y) { } ArrayList a = new ArrayList<>(); for (int i = 0; i < n; i++) { a.add(new a(list.get(i).size(), i)); } boolean[] visited=new boolean[n]; Collections.sort(a, (aa, bb) -> aa.x - bb.x); for (int i = 0; i < n; i++) { int j = a.get(i).y; visited[j]=true; ArrayList l = list.get(j); for (int o = 0; o < l.size(); o++) { int p = l.get(o); if (visited[p]) { } else { A[p] += (b[j] - A[j] + k) % k; A[p]%=k; A[j] = b[j]; } } } for (int i = 0; i < n; i++) { if (A[i] != b[i]) { System.out.println("No"); return; } } System.out.println("Yes"); } } }