#589. 交换重排(Swap to Rearrange)

交换重排(Swap to Rearrange)

题目描述

给定两个长度为 nn 的数组 aa 和 bb。你可以选择若干个下标 ii,对每个被选择的下标交换 aia_i 与 bib_i。每个下标最多选择一次。

你的目标是让操作后的数组 aa 成为数组 bb 的一个重排。也就是说,两个数组的元素多重集合必须相同。

如果无法做到,输出 −1-1;否则输出任意一种操作方案,不要求操作次数最少。

输入格式

第一行一个整数 tt,表示测试组数。

每组数据第一行一个整数 nn。

第二行 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

第三行 nn 个整数 b1,b2,…,bnb_1,b_2,\ldots,b_n。

输出格式

对每组数据,若无解,输出 −1-1。

否则输出两行:第一行输出操作次数 ss;第二行输出 ss 个整数,表示选择交换的下标。每个下标最多出现一次。

若有多种方案,输出任意一种即可。

样例

4
4
1 1 3 3
2 2 4 4
3
1 2 1
3 3 1
3
1 2 3
2 3 1
4
1 2 2 4
3 1 4 3
2
2 4
-1
0

2
3 4

说明

第一个样例中,交换下标 22 和 44 后,a=[1,2,3,4]a=[1,2,3,4],b=[2,1,4,3]b=[2,1,4,3],此时 aa 是 bb 的一个重排。

第二个样例中,无论如何操作都无法达成目标。

数据范围

1≤t≤1041\le t\le10^4,1≤n≤1061\le n\le10^6,1≤ai,bi≤n1\le a_i,b_i\le n。

所有测试组的 nn 之和不超过 10610^6。