#CF2113F. 两个数组

两个数组

F. 两个数组
每个测试点时间限制:2 秒
内存限制:512 兆字节

给定两个长度为 nn 的数组 aabb。你可以进行任意次以下操作:

  • 选择一个下标 ii1in1 \le i \le n),交换 aia_ibib_i

f(c)f(c) 为数组 cc 中不同数字的个数。
目标是最大化 f(a)+f(b)f(a) + f(b)。同时,输出操作完成后的数组 aabb


输入格式

每个测试点包含多个测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。
接下来每个测试用例的描述如下:

  • 第一行包含一个整数 nn1n1051 \le n \le 10^5),表示数组的长度。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai2n1 \le a_i \le 2n)。
  • 第三行包含 nn 个整数 b1,b2,,bnb_1, b_2, \dots, b_n1bi2n1 \le b_i \le 2n)。

数据保证所有测试用例的 nn 之和不超过 10510^5


输出格式

对于每个测试用例,在第一行输出一个整数 — 最大的 f(a)+f(b)f(a) + f(b)
在第二行输出 nn 个整数 — 操作后的数组 aa
在第三行输出 nn 个整数 — 操作后的数组 bb


示例

输入

3
5
1 2 4 4 4
1 3 3 5 2
7
2 2 4 4 5 5 5
1 3 3 2 1 6 6
7
12 3 3 4 5 6 4
1 2 13 8 10 13 7

输出

9
1 3 4 5 2
1 2 3 4 4
12
2 3 4 2 1 5 6
1 2 3 4 5 6 5
14
12 3 13 8 10 6 4
1 2 3 4 5 13 7

示例解释

第一个测试用例
进行三次操作,分别交换 i=2i=2i=4i=4i=5i=5 位置上的元素,得到:
a=[1,3,4,5,2]a = [1, 3, 4, 5, 2]b=[1,2,3,4,4]b = [1, 2, 3, 4, 4]
此时 f(a)=5f(a) = 5f(b)=4f(b) = 4,总和为 99,可证明无法更大。

第二个测试用例
操作后:
a=[2,3,4,2,1,5,6]a = [2, 3, 4, 2, 1, 5, 6]b=[1,2,3,4,5,6,5]b = [1, 2, 3, 4, 5, 6, 5]
f(a)=6f(a) = 6f(b)=6f(b) = 6,总和为 1212