#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 4000000000000000001LL void dfs(int cv,int pv,vector> &E,vector pos){ if(pv != -1){ pos[cv] = pos[pv] ^ 1; } rep(i,E[cv].size()){ int to = E[cv][i]; if(to!=pv)dfs(to,cv,E,pos); } } int main(){ int _t; cin>>_t; rep(_,_t){ int n,m,k; cin>>n>>m>>k; vector> E(n); vector> t; dsu D(n); rep(i,m){ int u,v; cin>>u>>v; u--,v--; if(D.same(u,v)){ t.emplace_back(u,v); } else{ E[u].push_back(v); E[v].push_back(u); D.merge(u,v); } } vector b(n); rep(i,n)cin>>b[i]; vector pos(n); dfs(0,-1,E,pos); long long sum = 0; rep(i,n){ if(pos[i]%2==0)sum += b[i]; else sum -= b[i]; } sum %= k; if(sum<0)sum += k; if(sum==0)cout<<"Yes"<