AT_arc228_d [ARC228D] Amidakuji 2

Description

$ (1,2,\dots,N) $ の順列 $ Q $ と非負整数 $ k $ に対して、以下のように $ (1,2,\dots,N) $ の順列 $ Q^k $ を定めます。 - 数列 $ R=(1,2,\dots,N) $ に対して、以下の操作を $ k $ 回行って得られる $ R $ を $ Q^k $ とする。 - $ i = 1,2,\dots,N $ に対して、 $ R_i $ を $ Q_{R_i} $ で置き換える。 $ (1,2,\dots,N) $ の順列が $ M $ 個与えられます。 $ i $ 個目の順列は $ P_i = (P_{i,1},P_{i,2},\dots,P_{i,N}) $ です。 以下の条件を満たす $ (1,2,\dots,N) $ の順列 $ Q=(Q_1,Q_2,\dots,Q_N) $ が存在するか判定し、存在する場合は一つ求めてください。 - $ 1 \le i \le M $ を満たす全ての整数 $ i $ に対して、 $ P_i = Q^k $ となる非負整数 $ k $ が存在する。 $ T $ 個のテストケースが与えられるので、それぞれについて解いてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ T $ $ \mathrm{case}_1 $ $ \mathrm{case}_2 $ $ \vdots $ $ \mathrm{case}_T $ 各テストケースは以下の形式で与えられる。 > $ N $ $ M $ $ P_{1,1}\ P_{1,2}\ \dots\ P_{1,N} $ $ P_{2,1}\ P_{2,2}\ \dots\ P_{2,N} $ $ \vdots $ $ P_{M,1}\ P_{M,2}\ \dots\ P_{M,N} $

Output Format

$ T $ 行出力せよ。 $ i $ 行目には $ \mathrm{case}_i $ の答えを以下の形式で出力せよ。 条件を満たす $ Q $ が存在しないならば `-1` を出力せよ。存在するならば以下の形式で出力せよ。 > $ Q_1\ Q_2\ \dots\ Q_N $ 条件を満たす $ Q $ が複数存在する場合、どれを出力しても正解とみなされる。

Explanation/Hint

### Sample Explanation 1 $ 1 $ 番目のケースについては、例えば $ Q=(3,1,2) $ は条件を満たします。 $ Q^0 = (1,2,3),Q^1 = (3,1,2),Q^2 = (2,3,1) $ となるため、 $ P_1 = Q^2,P_2 = Q^1 $ となり条件を満たします。 $ 2 $ 番目のケースについては、条件を満たす $ Q $ は存在しません。 ### Constraints - $ 1 \le T \le 250000 $ - $ 1 \le N,M \le 500 $ - $ P_1,P_2,\dots,P_M $ は $ (1,2,\dots,N) $ の順列 - 全てのテストケースに対する $ NM $ の総和は $ 250000 $ 以下 - 入力される値は全て整数