#P10008. 树上询问

树上询问

树上询问

Problem Description

给定一个大小为 nn 的树,第 ii 个节点点权为 pip_i,其中 p1,p2,,pnp_1,p_2,\ldots,p_n 是一个大小为 nn 的排列。接下来你要处理 mm 次以下两种操作之一:

  • 给定树上两点 xxyy,交换 pxp_xpyp_y
  • 给定区间 [l,r][l,r],询问是否存在树上两点 xxyy,使得 xxyy 路径上的点权恰好为 [l,r][l,r] 区间内所有整数。

Input

输入第一行包含一个整数 TT (1T201 \le T \le 20),表示测试数据的组数。 对于每组测试数据, 输入第一行包含一个整数 nn (1n1051 \le n \le 10^5),表示树的大小。 输入第二行包含 nn 个整数 p1,p2,,pnp_1,p_2,\ldots,p_n (1pin1 \le p_i \le n),表示节点的点权。保证 pp 是一个大小为 nn 的排列。 接下来 n1n-1 行,每行两个整数 xix_i, yiy_i (1xi,yin1 \le x_i, y_i \le n),表示存在一条连接节点 xix_i 与节点 yiy_i 的边。保证所有边构成一棵树。 接下来一行输入一个整数 mm (1m1051 \le m \le 10^5),表示操作的数量。 接下来 mm 行表示操作,第 ii 次操作为两种操作中的一种:

  • $1\ x\ y$ (1x,yn1\le x,y \le n),表示交换节点 xxyy 的点权。注意, xxyy 可能相同
  • $2\ l \ r$ (1lrn1 \le l \le r \le n),表示询问的区间。

Output

对于每次操作 22,输出一行一个字符串 YesNo ,分别表示树上存在/不存在满足条件的节点 xxyy

Sample Input

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

Sample Output

Yes
No
Yes

Source

2024“钉耙编程”中国大学生算法设计超级联赛(9)