时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}Alice 有 n 个集合 \{A_1\}, \{A_2\}, \dots, \{A_n\},初始时每一个集合中有一个元素,且全部的元素构成一个大小为 n排列
\hspace{15pt}Bob 有 n 个集合 \{B_1\}, \{B_2\}, \dots, \{B_n\},初始时每一个集合中有一个元素,且全部的元素构成一个大小为 n 的排列。

\hspace{15pt}你需要处理 q 次操作,这些操作有以下三个类型:
\hspace{23pt}\bullet\,交集查询:查询 Alice 编号为 i 的集合与 Bob 编号为 j 的集合的交集大小,即输出 A_i \cap B_j 的元素数量;
\hspace{23pt}\bullet\,合并到 A 操作:将 Alice 编号为 j 的集合合并到编号为 i 的集合中,并清空编号为 j 的集合,即 A_i \gets A_i \cup A_jA_j \gets \emptyset
\hspace{23pt}\bullet\,合并到 B 操作:将 Bob 编号为 j 的集合合并到编号为 i 的集合中,并清空编号为 j 的集合,即 B_i \gets B_i \cup B_jB_j \gets \emptyset

\hspace{15pt}保证询问涉及的集合都非空。
\hspace{15pt}长度为 n排列是由 1 \sim nn 个整数、按任意顺序组成的数组,其中每个整数恰好出现一次。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 10^5\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入一个整数 n\left(1\leq n\leq 5\times 10^5\right) 代表双方的集合数量。
\hspace{15pt}第二行输入 n 个互不相同的整数 a_1, a_2, \dots, a_n \left(1\leq a_i \leq n\right) 表示排列,其中第 i 个整数代表 A_i 中的初始元素。
\hspace{15pt}第三行输入 n 个互不相同的整数 b_1, b_2, \dots, b_n \left(1\leq b_i \leq n\right) 表示排列,其中第 i 个整数代表 B_i 中的初始元素。

\hspace{15pt}第四行输入一个整数 q\left(1\leq q\leq 5 \times 10^5\right) 代表操作次数。
\hspace{15pt}此后 q 行,每行先输入一个整数 op\left(1\leq op\leq 3\right) 代表操作类型,随后在同一行输入两个整数 i, j\left(1\leq i, j \leq n;\ i \neq j\right) 代表一次操作,操作编号同题干。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 5 \times 10^5q 之和不超过 5 \times 10^5

输出描述:

\hspace{15pt}对于每次操作一,新起一行。输出一个整数,代表交集中的元素个数。
示例1

输入

复制
1
5
1 2 3 4 5
1 2 3 4 5
8
2 1 3
1 1 1
1 1 3
2 5 1
3 2 3
1 5 2
3 1 2
1 5 1

输出

复制
1
1
1
2

说明

\hspace{15pt}对于第一组测试数据,模拟如下:
\hspace{23pt}\bullet\,对于第一次操作,A_3 合并到 A_1\begin{array}{ll}<br />\text{Alice:} & {\color{orange}{\bf\{1, 3\}}} & \{2\} & {\color{orange}{\bf\{\}}} & \{4\} & \{5\} \\<br />\text{Bob:} & \{1\} & \{2\} & \{3\} & \{4\} & \{5\}<br />\end{array}

\hspace{23pt}\bullet\,对于第二次操作,询问 A_1 \cap B_1 = \{1\}

\hspace{23pt}\bullet\,对于第三次操作,询问 A_1 \cap B_3 = \{3\}

\hspace{23pt}\bullet\,对于第四次操作,A_1 合并到 A_5\begin{array}{ll}<br />\text{Alice:} & {\color{orange}{\bf\{\}}} & \{2\} & \{\} & \{4\} & {\color{orange}{\bf\{1, 3, 5\}}}\\<br />\text{Bob:} & \{1\} & \{2\} & \{3\} & \{4\} & \{5\}<br />\end{array}

\hspace{23pt}\bullet\,对于第五次操作,B_3 合并到 B_2\begin{array}{ll}<br />\text{Alice:} & \{\} & \{2\} & \{\} & \{4\} & \{1, 3, 5\}\\<br />\text{Bob:} & \{1\} & {\color{orange}{\bf\{2, 3\}}} & {\color{orange}{\bf\{\}}} & \{4\} & \{5\}<br />\end{array}

\hspace{23pt}\bullet\,对于第六次操作,询问 A_5 \cap B_2 = \{3\}

\hspace{23pt}\bullet\,对于第七次操作,B_2 合并到 B_1\begin{array}{ll}<br />\text{Alice:} & \{\} & \{2\} & \{\} & \{4\} & \{1, 3, 5\}\\<br />\text{Bob:} & {\color{orange}{\bf\{1, 2, 3\}}} & {\color{orange}{\bf\{\}}} & \{\} & \{4\} & \{5\}<br />\end{array}

\hspace{23pt}\bullet\,对于第八次操作,询问 A_5 \cap B_1 = \{1, 3\}