AT_abc371_g [ABC371G] Lexicographically Smallest Permutation

Description

[problemUrl]: https://atcoder.jp/contests/abc371/tasks/abc371_g $ (1,2,\ldots,N) $ の並べ替え $ P=(P\ _\ 1,P\ _\ 2,\ldots,P\ _\ N),A=(A\ _\ 1,A\ _\ 2,\ldots,A\ _\ N) $ が与えられます。 あなたは、次の操作を $ 0 $ 回以上好きな回数行うことができます。 - $ i=1,2,\ldots,N $ に対して**一斉に** $ A\ _\ i $ を $ A\ _\ {P\ _\ i} $ で置き換える。 得られる $ A $ としてありえるもののうち、辞書順で最小のものを出力してください。 辞書順の大小とは? 長さ $ N $ の列 $ A=(A\ _\ 1,A\ _\ 2,\ldots,A\ _\ N),B=(B\ _\ 1,B\ _\ 2,\ldots,B\ _\ N) $ について、辞書順で $ A $ が $ B $ より小さいとは、次のことが成り立つことをいいます。 - ある整数 $ i\ (1\leq\ i\leq\ N) $ が存在し、$ A\ _\ i\lt\ B\ _\ i $ が成り立ち、$ 1\leq\ j\lt\ i $ を満たすすべての整数 $ j $ に対して $ A\ _\ j=B\ _\ j $ が成り立つ。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ P\ _\ 1 $ $ P\ _\ 2 $ $ \ldots $ $ P\ _\ N $ $ A\ _\ 1 $ $ A\ _\ 2 $ $ \ldots $ $ A\ _\ N $

Output Format

$ 0 $ 回以上の操作の結果としてあり得る $ A $ のうち辞書順で最小のものを $ (A\ _\ 1,A\ _\ 2,\ldots,A\ _\ N) $ として、$ A\ _\ 1,A\ _\ 2,\ldots,A\ _\ N $ をこの順に空白を区切りとして $ 1 $ 行に出力せよ。

Explanation/Hint

### 制約 - $ 1\leq\ N\leq2\times10\ ^\ 5 $ - $ 1\leq\ P\ _\ i\leq\ N\ (1\leq\ i\leq\ N) $ - $ P\ _\ i\neq\ P\ _\ j\ (1\leq\ i\lt\ j\leq\ N) $ - $ 1\leq\ A\ _\ i\leq\ N\ (1\leq\ i\leq\ N) $ - $ A\ _\ i\neq\ A\ _\ j\ (1\leq\ i\lt\ j\leq\ N) $ - 入力はすべて整数 ### Sample Explanation 1 はじめ、$ A=(4,3,1,6,2,5) $ です。 ここから操作を繰り返すと、以下のようになります。 - $ A=(1,4,2,5,3,6) $ となる。 - $ A=(2,1,3,6,4,5) $ となる。 - $ A=(3,2,4,5,1,6) $ となる。 - $ A=(4,3,1,6,2,5) $ となる。 以降、$ 4 $ 回操作を行うたびにもとの $ A $ に戻ります。 よって、このうち辞書順で最小である `1 4 2 5 3 6` を出力してください。 ### Sample Explanation 2 $ 1 $ 度も操作をしなくても構いません。