int a[2d5],k;
graph g;
int f(int i,int p,int w){
	int x=w?a[i-1]%(k+1):0;
	rep[g.edge[i]](j,g.es[i]){
		if(j!=p){
			x^=f(j,i,!w);
		}
	}
	return x;
}
{
	ll@t;
	rep(t){
		int@n;
		rd(k);
		int@(x,y)[n-1];
		rd(a(n));
		g.setEdge(n+1,n-1,x,y);
		wt(f(1,1,0)?'K':'P');
	}
}