#9. Equal XOR

Equal XOR

题目描述

给你一个长度为 2n2*n 的数组 aa ,它由 11nn 的每个整数组成,每个整数包含 22 次。同时给你一个整数 k(1kn2)k(1≤k≤⌊\frac{n}{2}⌋)

你需要找出两个长度分别为 2k2*k 的数组 llrr,使得:

  • ll[a1,a2,an][a_1,a_2,…a_n] 的子集。
  • rr[an+1,an+2,...,a2n][a_{n+1},a_{n+2},...,a_{2n}] 的子集。
  • ll 元素的异或等于 rr 元素的异或。换句话说:l1l2...l2k=r1r2...r2kl_1⊕l_2⊕...⊕l_{2k}=r_1⊕r_2⊕...r_{2k} 的子集。

至少有一对 llrr 是存在的。如果有多个解,可以输出其中任意一个。

序列 xx 是序列 yy 的子集,如果 xx 可以通过删除 yy 中的几个元素(可能一个元素也没有或全部元素)并按任意顺序重新排列而得到。例如,[3,1,2,1][3,1,2,1][1,2,3][1,2,3][1,1][1,1][3,2][3,2][1,1,2,3][1,1,2,3] 的子集,但 [4][4][2,2][2,2] 不是 [1,1,2,3][1,1,2,3] 的子集。

输入格式

第一行包含 22 个整数 nnkk (2n5104,1kn2)(2≤n≤5⋅10^4 , 1≤k≤⌊\frac{n}{2})

第二行包含 2n2*n 个整数 a1,a2,...,a2n(1ain)a_1,a_2,...,a_{2n}(1 \leq a_i \leq n)。保证从 11nn 的每个整数在 aa 中恰好出现两次。

输出格式

输出两行。

在第一行输出中,输出 2k2*k 个整数 l1,l2,...,l2kl_1,l_2,...,l_{2k}

在第二行输出中,输出 2k2*k 个整数 r1,r2,...,r2kr_1,r_2,...,r_{2k}

如果有多个解,可以输出其中任意一个。

样例

样例输入1

2 1
1 2 2 1

样例输出1

2 1
2 1

样例输入2

6 1
6 4 2 1 2 3 1 6 3 5 5 4

样例输出2

6 4
1 3

样例输入3

4 1
1 2 3 4 1 2 3 4

样例输出3

1 2
1 2

提示

样例 11 中,我们选择 l=[2,1]l=[2,1]r=[2,1]r=[2,1][2,1][2,1][a1,a2][a_1,a_2] 的子集, [2,1][2,1][a_3,a_4][a\_3,a\_4] 的子集。21=21=32⊕1=2⊕1=3 ,满足题意。

样例 22 中,64=13=26⊕4=1⊕3=2 ,满足题意。