D. 【GENOIP#57】烦死出题人的排列(fan)

1 s
256 MB

题目描述

$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$

样例

OI
Contest Ended