#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, n) for(i = 0; i < n; i++) #define int long long using namespace std; using namespace atcoder; using mint = modint998244353; int n, m, K; vector> et; vector b; // 辺p--vの操作回数を返す int dfs(int p, int v) { int cnt = 0; for (int nv: et[v]) { if (nv == p) continue; cnt += dfs(v, nv); cnt %= K; } int ret = (b[v] - cnt + K) % K; return ret; } signed main() { int T; cin >> T; while (T--) { cin >> n >> m >> K; et.clear(); et.resize(n); int i; rep(i, m) { int u, v; cin >> u >> v; u--; v--; et[u].push_back(v); et[v].push_back(u); } b.clear(); b.resize(n); rep(i, n) { cin >> b[i]; } int val = dfs(-1, 0); if (val == 0) { cout << "Yes" << endl; } else { cout << "No" << endl; } } return 0; }