AT_scpc2026_div2_c Rearrangement

Description

#### 表示言語 / / 長さ $ N $ の整数配列 $ A=[A_1,\dots,A_N] $ と,長さ $ M $ の整数配列 $ B=[B_1,\dots,B_M] $ が与えられる. $ A $ の並べ替えのうち, $ B $ が連続部分列として現れる回数が最大になる配列を求めよ.ここで, $ A $ の**並べ替え**とは,次の条件を満たす配列 $ A' $ を意味する. - $ A' $ は長さ $ N $ の整数配列であり, $ A'_i=A_{P_i}(1 \le i \le N) $ となる $ 1,\dots,N $ の順列 $ P $ が存在する. 連続部分列とは ある数列の **連続部分列** とは,元の数列から連続した位置の要素を順番に取り出してできる数列である.例えば,数列 $ [1,2,3,4] $ において $ [2,3] $ は連続部分列であるが, $ [1,3] $ は連続部分列ではない. 同じ数列の中で,複数の連続部分列が互いに重なって現れることもある.例えば,数列 $ [1,2,1,2,1] $ において $ [1,2,1] $ は合計 $ 2 $ 回現れる. 順列とは 長さ $ N $ の **順列** とは, $ 1 $ から $ N $ までの整数をちょうど一度ずつ含む数列である.例えば $ [2,1,4,3] $ は順列であるが, $ [4,2,1,1] $ や $ [1,2,3,5] $ は順列ではない.

Input Format

入力は以下の形式で標準入力から与えられる. > $ N $ $ M $ $ A_1 $ $ A_2 $ $ \dots $ $ A_N $ $ B_1 $ $ B_2 $ $ \dots $ $ B_M $

Output Format

$ B $ が連続部分列として現れる回数が最大になる $ A $ の並べ替えの要素を,順に空白区切りで出力せよ. 条件を満たす並べ替えが複数存在する場合,そのうちどれを出力してもよい.

Explanation/Hint

### Constraints - $ 1 \le M \le N \le 1\,000\,000 $ - $ 0 \le A_i, B_i \le 1\,000\,000 $ - 入力される数値はすべて整数