F - Make Adjacent Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 800

問題文

長さ 2n の整数列 X=(X_1,X_2,\dots,X_{2n}) のうち、すべての i=1,2,\dots,n に対し X_{2i-1}=X_{2i} が成り立つものを 良い数列 と呼びます。

長さ 2N の整数列 A=(A_1,A_2,\dots,A_{2N}) があります。この整数列は各整数 i=1,2,\dots,N をちょうど 2 個ずつ含みます。

A に対して「隣接する 2 項の値を入れ替える」という操作を 0 回以上行うことで、 A良い数列 にしたいです。

A良い数列 にするのに必要な最小の操作回数を K としたとき、 A に対し操作を K 回行うことで得られる 良い数列 のうち、辞書式順序で最小のものを求めてください。

数列の辞書順とは?

数列 S = (S_1,S_2,\ldots,S_{|S|}) が数列 T = (T_1,T_2,\ldots,T_{|T|}) より辞書順で小さいとは、下記の 1. と 2. のどちらかが成り立つことを言います。 ここで、|S|, |T| はそれぞれ S, T の長さを表します。

  1. |S| \lt |T| かつ (S_1,S_2,\ldots,S_{|S|}) = (T_1,T_2,\ldots,T_{|S|})
  2. ある整数 1 \leq i \leq \min\lbrace |S|, |T| \rbrace が存在して、下記の 2 つがともに成り立つ。
    • (S_1,S_2,\ldots,S_{i-1}) = (T_1,T_2,\ldots,T_{i-1})
    • S_iT_i より(数として)小さい。

制約

  • 1 \leq N \leq 2 \times 10^5
  • 1 \leq A_i \leq N
  • 各整数 i=1,2,\dots,NA にちょうど 2 個ずつ含まれる
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられます。

N
A_1 A_2 \dots A_{2N}

出力

A に対し操作を K 回行うことで得られる 良い数列 のうち、辞書式順序で最小のものを空白区切りで出力してください。


入力例 1

3
3 2 1 2 3 1

出力例 1

2 2 3 3 1 1

例えば (3,2,1,2,3,1) \rightarrow (3,2,1,3,2,1) \rightarrow (3,2,3,1,2,1) \rightarrow (3,3,2,1,2,1) \rightarrow (3,3,2,2,1,1) というように 4 回の操作で A良い数列 にすることができ、これが最小の操作回数です。 4 回の操作では他に A=(2,2,3,3,1,1) とすることもできるので、答えは (2,2,3,3,1,1) となります。


入力例 2

3
1 1 2 2 3 3

出力例 2

1 1 2 2 3 3

入力例 3

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

出力例 3

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

Score : 800 points

Problem Statement

An integer sequence of length 2n, X=(X_1,X_2,\dots,X_{2n}), such that X_{2i-1}=X_{2i} for every i=1,2,\dots,n is called a good sequence.

There is an integer sequence of length 2N, A=(A_1,A_2,\dots,A_{2N}), which contains each integer i=1,2,\dots,N exactly twice.

We want to make A a good sequence by performing the operation of swapping the values of two adjacent terms zero or more times.

Let K be the minimum number of operations we must perform the operation to make A a good sequence. Find the lexicographically smallest good sequence that can be obtained by performing the operations K times on A.

What is lexicographical order on sequences?

A sequence S = (S_1,S_2,\ldots,S_{|S|}) is lexicographically smaller than T = (T_1,T_2,\ldots,T_{|T|}) when 1. or 2. below holds. Here, |S| and |T| denotes the lengths of S and T, respectively.

  1. |S| \lt |T| and (S_1,S_2,\ldots,S_{|S|}) = (T_1,T_2,\ldots,T_{|S|}).
  2. There is an integer 1 \leq i \leq \min\lbrace |S|, |T| \rbrace that satisfy both of the following:
    • (S_1,S_2,\ldots,S_{i-1}) = (T_1,T_2,\ldots,T_{i-1}).
    • S_i is smaller than T_i (as a number).

Constraints

  • 1 \leq N \leq 2 \times 10^5
  • 1 \leq A_i \leq N
  • A contains each integer i=1,2,\dots,N exactly twice.
  • All input values are integers.

Input

The input is given from Standard Input in the following format:

N
A_1 A_2 \dots A_{2N}

Output

Print the lexicographically smallest good sequence that can be obtained by performing the operations K times on A, with spaces in between.


Sample Input 1

3
3 2 1 2 3 1

Sample Output 1

2 2 3 3 1 1

For example, we can perform the operation four times as (3,2,1,2,3,1) \rightarrow (3,2,1,3,2,1) \rightarrow (3,2,3,1,2,1) \rightarrow (3,3,2,1,2,1) \rightarrow (3,3,2,2,1,1) to make A a good sequence. This number is the minimum needed. With four operations, we can also make A=(2,2,3,3,1,1), and the answer is (2,2,3,3,1,1).


Sample Input 2

3
1 1 2 2 3 3

Sample Output 2

1 1 2 2 3 3

Sample Input 3

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

Sample Output 3

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