#include #include #include using namespace std; void solve() { int n, m, k; cin >> n >> m >> k; vector> g(n); for (int i = 0; i < m; ++i) { int u, v; cin >> u >> v; --u, --v; g[u].push_back(v); g[v].push_back(u); } vector b(n); for (int i = 0; i < n; ++i) cin >> b[i]; vector dep(n); auto dfs = [&](auto f, int now, int p) -> void { for (auto to : g[now]) { if (to == p) continue; dep[to] = dep[now] + 1; f(f, to, now); } }; dfs(dfs, 0, -1); long long sum = 0; for (int i = 0; i < n; ++i) { if (dep[i] % 2) sum += b[i]; else sum -= b[i]; } cout << (sum % k == 0 ? "Yes" : "No") << endl; } int main() { int t; cin >> t; while (t--) solve(); }