read_line.to_i.times do puts solve() ? "Yes" : "No" end def solve n, m, k = read_line.split.map(&.to_i) g = Array.new(n) { [] of Int32 } (n - 1).times do a, b = read_line.split.map(&.to_i) g[a - 1] << b - 1 g[b - 1] << a - 1 end b = read_line.split.map(&.to_i) q = [0] parent = Array.new(n, -1) n.times do |i| cur = q[i] g[cur].each do |adj| next if parent[cur] == adj parent[adj] = cur q << adj end end (n - 1).downto(1) do |i| cur = q[i] par = parent[cur] b[par] += k - b[cur] b[par] %= k b[cur] = 0 end b.all? { |v| v == 0 } end