#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 &b,int k){ rep(i,E[cv].size()){ int to = E[cv][i]; if(to!=pv)dfs(to,cv,E,b,k); } if(pv != -1){ b[cv] %= k; if(b[cv]<0)b[cv] += k; b[pv] -= b[cv]; b[cv] = 0; b[pv] %= k; if(b[pv]<0)b[pv] += k; } } int main(){ int _t; cin>>_t; rep(_,_t){ int n,m,k; cin>>n>>m>>k; vector> E(n); rep(i,m){ int u,v; cin>>u>>v; u--,v--; E[u].push_back(v); E[v].push_back(u); } vector b(n); rep(i,n)cin>>b[i]; dfs(0,-1,E,b,k); if(b==vector(n,0))cout<<"Yes"<