题目描述
有 $m$ 个长度为 $n$ 排列 $q_1,\dots,q_m$,现在你需要自己定义 $k$ 个置换,使得对于任意一个 $q_i$,都可以从初始排列 $(1,2,\dots,n)$ 以某种顺序应用这 $k$ 个置换若干次得到。
求 $k$ 的最小值是多少,并给出构造方案。
输入格式
首先给出两个整数 $m,n$。然后 $m$ 行每行 $n$ 个数,表示 $q_1,\dots,q_m$。
输出格式
首先输出一个数 $k$,表示构造的置换个数。随后 $k$ 行每行 $n$ 个数输出构造的置换。若有多种答案,输出任意一种即可。
样例
样例 #1
输入:
3 3
2 1 3
1 3 2
2 3 1
输出:
2
2 1 3
1 3 2
(其他合法方案亦可)
样例 #2
输入:
3 10
3 4 5 6 7 8 9 10 1 2
6 7 8 9 10 1 2 3 4 5
4 5 6 7 8 9 10 1 2 3
输出:
1
2 3 4 5 6 7 8 9 10 1
(其他合法方案亦可)
数据范围
- 对于 $10\%$ 的数据,$1\leq n\leq3$;
- 对于另外 $20\%$ 的数据,$1\leq n\leq10$;
- 对于另外 $20\%$ 的数据,$1\leq n\leq70$;
- 对于 $100\%$ 的数据,$1\leq n\leq300$,$1\leq m\leq500$。