给定一个大小为 $n$ 的树,第 $i$ 个节点点权为 $p_i$,其中 $p_1, p_2, \cdots, p_n$ 是一个大小为 $n$ 的排列。接下来你要处理 $m 次以下两种操作之一:
给定树上两点 $x$ 和 $y$,交换 $p_x$ 和 $p_y$ 。
给定区间 $[l,r]$,询问是否存在树上两点 $x$ 和 $y$,使得 $x$ 到 $y$ 路径上的点权恰好为 $[l,r]$ 区间内所有整数。
输入第一行包含一个整数 $T (1≤T≤20)$,表示测试数据的组数。
对于每组测试数据,
输入第一行包含一个整数 $n (1≤n≤10^5 )$,表示树的大小。
输入第二行包含 $n$ 个整数 $p_1, p_2, \cdots, p_n (1 \le p_i \le n)$,表示节点的点权。保证 $p$ 是一个大小为 $n$ 的排列。
接下来 $n−1$ 行,每行两个整数 $x_i, y_i (1≤x_i, y_i ≤n)$,表示存在一条连接节点 $x_i$ 与节点 $y_i$ 的边。保证所有边构成一棵树。
接下来一行输入一个整数 $m (1≤m≤10^5 )$,表示操作的数量。
接下来 $m$ 行表示操作,第 $i$ 次操作为两种操作中的一种:
$1\ x\ y (1≤x,y≤n)$,表示交换节点 $x$ 和 $y$ 的点权。注意, $x$ 和 $y$ 可能相同。
$2\ l\ r (1≤l≤r≤n)$,表示询问的区间。
对于每次操作 $2$,输出一行一个字符串 Yes
或 No
,分别表示树上存在/不存在满足条件的节点 $x$ 与 $y$。
2 5 1 2 3 4 5 1 2 1 3 3 4 3 5 3 2 1 3 1 3 4 2 1 3 4 1 2 3 4 1 2 2 3 3 4 1 2 1 4
\n \n · · · · \n · \n · \n · \n · \n \n · · \n · · \n · · \n \n · · · \n · \n · \n · \n \n · · \n
Yes No Yes
\n \n \n