AT_arc134_d [ARC134D] Concatenate Subsequences
Description
[problemUrl]: https://atcoder.jp/contests/arc134/tasks/arc134_d
長さ $ 2N $ の数列 $ a $ が与えられます。
すぬけ君が $ (1,2,\ \ldots,\ N) $ の**空でない**(連続するとは限らない)部分列 $ x=(x_1,x_2,\ldots,x_k) $ を用いて、数列を作ろうとしています。 作られる数列は、$ a $ の $ x_1 $ 番目、$ x_2 $ 番目、$ \ldots $、$ x_k $ 番目、$ x_{1}+N $ 番目、$ \ldots $、$ x_{k}+N $ 番目の要素を抜き出してこの順で連結した数列です。
すぬけ君が作ることができる数列のうち、辞書順最小のものを求めてください。
数列の辞書順とは? 相異なる数列 $ S $ と数列 $ T $ の大小を判定するアルゴリズムを以下に説明します。
以下では $ S $ の $ i $ 番目の要素を $ S_i $ のように表します。また、 $ S $ が $ T $ より辞書順で小さい場合は $ S\ \lt\ T $ 、大きい場合は $ S\ \gt\ T $ と表します。
1. $ S $ と $ T $ のうち長さが短い方の数列の長さを $ L $ とします。$ i=1,2,\dots,L $ に対して $ S_i $ と $ T_i $ が一致するか調べます。
2. $ S_i\ \neq\ T_i $ である $ i $ が存在する場合、そのような $ i $ のうち最小のものを $ j $ とします。そして、$ S_j $ と $ T_j $ を比較して、 $ S_j $ が $ T_j $ より(数として)小さい場合は $ S\ \lt\ T $ 、大きい場合は $ S\ \gt\ T $ と決定して、アルゴリズムを終了します。
3. $ S_i\ \neq\ T_i $ である $ i $ が存在しない場合、 $ S $ と $ T $ の長さを比較して、$ S $ が $ T $ より短い場合は $ S\ \lt\ T $ 、長い場合は $ S\ \gt\ T $ と決定して、アルゴリズムを終了します。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ a_{1} $ $ \cdots $ $ a_{2N} $
Output Format
すぬけ君が作ることができる数列のうち、辞書順最小のものを出力せよ。
Explanation/Hint
### 制約
- 与えられる入力は全て整数
- $ 1\ \leq\ N\ \leq\ 10^5 $
- $ 1\ \leq\ a_i\ \leq\ 10^9 $
### Sample Explanation 1
\- $ x\ =\ (2) $ とします。 - このとき、作られる数列は $ (1,2) $ となり辞書順最小です。