#ATarc134d. [ARC134D] Concatenate Subsequences

[ARC134D] Concatenate Subsequences

题目描述

给定一个长度为 2N2N 的数列 aa

すぬけ君打算用 (1,2,,N)(1,2,\ldots,N)非空(不一定连续)子序列 x=(x1,x2,,xk)x=(x_1,x_2,\ldots,x_k),来构造一个新的数列。构造方式为:取 aa 的第 x1x_1x2x_2\ldotsxkx_k 项,以及第 x1+Nx_1+N\ldotsxk+Nx_k+N 项,按顺序连接,得到新的数列。

请你求出すぬけ君可以构造出的所有数列中,字典序最小的那个。

什么是数列的字典序?对于两个不同的数列 SSTT,判断大小的算法如下:

SS 的第 ii 项为 SiS_i。若 SS 的字典序小于 TT,记作 S<TS < T,大于则记作 S>TS > T

  1. SSTT 中较短的那个数列的长度为 LL。依次比较 i=1,2,,Li=1,2,\ldots,LSiS_iTiT_i 是否相等。
  2. 如果存在 SiTiS_i \neq T_i,取最小的这样的 iijj,比较 SjS_jTjT_j,若 SjS_jTjT_j 小,则 S<TS < T,大则 S>TS > T,算法结束。
  3. 如果所有 Si=TiS_i = T_i,则比较数列长度,短的字典序小,长的字典序大,算法结束。

输入格式

输入从标准输入读入,格式如下:

NN a1a_1 a2a_2 \cdots a2Na_{2N}

输出格式

请输出すぬけ君可以构造出的所有数列中,字典序最小的那个。

样例 1

输入

3
2 1 3 1 2 2

输出

1 2

样例 2

输入

10
38 38 80 62 62 67 38 78 74 52 53 77 59 83 74 63 80 61 68 55

输出

38 38 38 52 53 77 80 55

样例 3

输入

12
52 73 49 63 55 74 35 68 22 22 74 50 71 60 52 62 65 54 70 59 65 54 60 52

输出

22 22 50 65 54 52

说明/提示

数据范围

  • 所有输入均为整数。
  • 1N1051 \leq N \leq 10^5
  • 1ai1091 \leq a_i \leq 10^9

样例解释 1

  • x=(2)x = (2) 时,构造出的数列为 (1,2)(1,2),这是字典序最小的。

由 ChatGPT 4.1 翻译