#[allow(unused_imports)] use proconio::{ input, marker::{Bytes, Chars, Usize1}, }; fn main() { input! { t: usize, } for _ in 0..t { input! { n: usize, m: usize, } let mut g = vec![vec![]; n]; for _ in 0..n - 1 { input! { a: Usize1, b: Usize1, } g[a].push(b); g[b].push(a); } input! { a: [usize; n], } let mut d = vec![!0; n]; let mut st = vec![0]; d[0] = 0; while let Some(v) = st.pop() { for &u in &g[v] { if d[u] == !0 { d[u] = d[v] + 1; st.push(u); } } } let mut s = 0; for i in 0..n { s ^= (d[i] & 1) * (a[i] % (m + 1)); } println!("{}", if s == 0 { "P" } else { "K" }); } }