AT_xmascon23_g Group Structure

Description

$ N $ を正整数とする. $ (1, 2, \ldots, N) $ の順列全体を $ \mathfrak{S}_N $ と書く. $ f \in \mathfrak{S}_N $ は列 $ (f(1), f(2), \ldots, f(N)) $ と同一視する. $ f, g \in \mathfrak{S}_N $ に対し, $ f \circ g \in \mathfrak{S}_N $ を, $ k = 1, 2, \ldots, N $ に対し $ (f \circ g)(k) = f(g(k)) $ として定める.また, $ \mathfrak{S}_N $ のすべての元を辞書順に並べたものを $ P(1) < P(2) < \cdots < P(N!) $ とする. $ (N!)^2 $ 個の整数 $ A(i, j) $ ( $ 1 \le i, j \le N! $ ) が与えられる. $ (1, 2, \ldots, N!) $ の順列 $ q = (q(1), q(2), \ldots, q(N!)) $ であって,すべての $ 1 \le i, j \le N! $ に対し $ P(q(i)) \circ P(q(j)) = P(q(A(i, j))) $ を満たすものを**すべて**求め,**辞書順に**出力せよ. なお,**条件を満たす $ q $ が存在する**ことが制約によって保証されている.

Input Format

入力は以下の形式で標準入力から与えられる. > $ N $ $ A(1, 1) $ $ A(1, 2) $ $ \cdots $ $ A(1, N!) $ $ A(2, 1) $ $ A(2, 2) $ $ \cdots $ $ A(2, N!) $ $ \vdots $ $ A(N!, 1) $ $ A(N!, 2) $ $ \cdots $ $ A(N!, N!) $

Output Format

$ 1 $ 行目に,条件を満たす $ q $ の個数を出力せよ. 以降,条件を満たす $ q $ を**辞書順に** $ 1 $ 行ずつ,それぞれ $ q(1), q(2), \ldots, q(N!) $ をこの順に空白区切りで出力せよ.

Explanation/Hint

### 部分点 - $ N = 1, 2, 3, 4, 5, 6 $ を満たすデータセットに正解した場合は,それぞれ $ 1, 2, 4, 8, 16, 69 $ 点が与えられる. ### Sample Explanation 1 $ \mathfrak{S}_3 $ の元は以下の $ 6 $ 個である: - $ P(1) = (1, 2, 3) $ - $ P(2) = (1, 3, 2) $ - $ P(3) = (2, 1, 3) $ - $ P(4) = (2, 3, 1) $ - $ P(5) = (3, 1, 2) $ - $ P(6) = (3, 2, 1) $ 例えば $ q = (3, 2, 6, 4, 5, 1) $ のとき, - $ P(q(1)) = (2, 1, 3) $ - $ P(q(2)) = (1, 3, 2) $ - $ P(q(3)) = (3, 2, 1) $ - $ P(q(4)) = (2, 3, 1) $ - $ P(q(5)) = (3, 1, 2) $ - $ P(q(6)) = (1, 2, 3) $ となる. $ P(q(2)) \circ P(q(3)) = P(q(4)) = P(q(A(2, 3))) $ などが成り立つことが確認できる. ### Constraints - $ 1 \le N \le 6 $ . - $ 1 \le A(i, j) \le N! $ ( $ 1 \le i, j \le N! $ ). - 問題文の条件を満たす $ q $ が存在する.