#arc080c. [arc080_c]Young Maids

[arc080_c]Young Maids

题目描述

NN 是一个正偶数。

我们有一个序列 (1,2,...,N)(1, 2, ..., N) 的排列,记为 p=(p1,p2,...,pN)p = (p_1, p_2, ..., p_N)。Snuke 正在按照以下步骤构造另一个序列 (1,2,...,N)(1, 2, ..., N) 的排列 qq

首先,令 qq 为空序列。然后,执行以下操作,直到 pp 变为空序列:

  • pp 中选择两个相邻的元素,并按顺序称之为 xxyy。从 pp 中删除 xxyy(将 pp 的长度减少 22),并将 xxyy 按原始顺序插入 qq 的开头。

pp 变为空序列时,qq 将是一个 (1,2,...,N)(1, 2, ..., N) 的排列。

找到可以得到的字典序最小的排列 qq

约束条件

  • NN 是一个偶数。
  • 2N2×1052 ≤ N ≤ 2 × 10^5
  • pp(1,2,...,N)(1, 2, ..., N) 的排列。

输入格式

从标准输入中以以下格式给出输入:

NN p1p_1 p2p_2 ...... pNp_N

输出格式

以空格为分隔打印字典序最小的排列。


示例输入1

4
3 2 4 1

示例输出1

3 1 2 4

上面的解法是按照以下步骤得到的:

pp

qq

(3,2,4,1)(3, 2, 4, 1)

()()

(3,1)(3, 1)

(2,4)(2, 4)

()()

(3,1,2,4)(3, 1, 2, 4)


示例输入2

2
1 2

示例输出2

1 2

示例输入3

8
4 6 3 2 8 5 7 1

示例输出3

3 1 2 7 4 6 8 5

上面的解法是按照以下步骤得到的:

pp

qq

(4,6,3,2,8,5,7,1)(4, 6, 3, 2, 8, 5, 7, 1)

()()

(4,6,3,2,7,1)(4, 6, 3, 2, 7, 1)

(8,5)(8, 5)

(3,2,7,1)(3, 2, 7, 1)

(4,6,8,5)(4, 6, 8, 5)

(3,1)(3, 1)

(2,7,4,6,8,5)(2, 7, 4, 6, 8, 5)

()()

(3,1,2,7,4,6,8,5)(3, 1, 2, 7, 4, 6, 8, 5)