给定一棵树及其顶点的一个排列。可以证明,对于任何树以及任意一对源节点和目标节点,都存在某种节点排列,使得第一个节点为源节点,最后一个节点为目标节点,且排列中相邻节点之间的距离小于或等于 3。
你的任务是编写一个程序来验证该性质。给定这样一个排列和树,请验证排列中相邻节点之间的距离是否都小于或等于 3。
输入格式
第一行包含一个整数 $t$ ($1 \le t \le 50,000$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$ ($2 \le n \le 100,000$),表示树中的节点数。节点编号从 1 到 $n$。
接下来的 $n - 1$ 行,每行包含一对整数 $a$ 和 $b$ ($1 \le a < b \le n$),表示树中节点 $a$ 和 $b$ 之间的一条边。
接下来的 $n$ 行,每行包含一个整数 $p$ ($1 \le p \le n$,所有值互不相同)。这是节点的排列。
所有测试用例的 $n$ 之和不超过 $100,000$。
输出格式
对于每个测试用例,输出一行,包含一个整数。如果给定的排列满足“排列中每一对相邻节点在树中的距离都小于或等于 3”这一约束,则输出 1;否则输出 0。
样例
样例输入 1
2 5 1 2 2 3 3 4 4 5 1 3 2 5 4 5 1 2 2 3 3 4 4 5 1 5 2 3 4
样例输出 1
1 0