#include #include using namespace std; using i32 = int; using i64 = long long; using i128 = __int128_t; using f64 = double; using p2 = pair; using el = tuple; using mint = atcoder::modint998244353; void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(18); _main(); } void _main() { i64 tt; cin >> tt; for (;tt--;) { i64 n, m, k; cin >> n >> m >> k; vector> g(n); for (i64 i = 0; i < m; i++) { i64 u, v; cin >> u >> v; u--, v--; g[u].push_back(v); g[v].push_back(u); } vector b(n); for (i64 i = 0; i < n; i++) cin >> b[i]; vector dp(n, -1); bool bi = true; auto dfs = [&](auto &&dfs, i64 v) -> void { for (i64 nv : g[v]) { if (dp[nv] == -1) { dp[nv] = 1 - dp[v]; dfs(dfs, nv); } else { bi &= dp[v] != dp[nv]; } } }; dp[0] = 0; dfs(dfs, 0); if (!bi) { cout << "Yes\n"; } else { i64 x = 0, y = 0; for (i64 i = 0; i < n; i++) { if (dp[i] == 0) x += b[i]; else y += b[i]; x %= k, y %= k; } if (x == y) { cout << "Yes\n"; } else { cout << "No\n"; } } } }