Jas 和 Małgosia 有一个 $K$ 列 $W$ 行的矩形棋盘 ($W \le K$)。不幸的是,棋盘上的一些格子有洞,不能在这些格子上放置任何棋子。这些洞是 Jas 造成的,他非常喜欢玩电钻。Małgosia 对此不太高兴,但由于她数学很好,她计算了在这张棋盘上放置 $W$ 个互不攻击的车(即没有任何两个车位于同一行或同一列)的方法数(只能放置在没有洞的格子上)。她记录下了结果,并时不时检查它是否发生了变化。
然而,Jas 并没有放弃。他想钻更多的洞,但要保证 Małgosia 不会察觉,也就是说,互不攻击的车放置方案数不能改变。他请求你帮助他确定他可以钻洞的格子的最大数量。
题目描述
编写一个程序,完成以下任务:
- 读取棋盘的尺寸和洞的位置;
- 找到一个最大的格子集合,在这些格子上钻洞,且不会改变在棋盘上放置 $W$ 个车的方法数;
- 指出这些格子。
输入格式
第一行包含三个用空格分隔的自然数 $K, W, P$ ($1 \le W \le K, 0 \le P \le K \cdot W \le 10^6$)。$K$ 和 $W$ 分别表示列数和行数。$P$ 表示棋盘上洞的数量。
接下来的 $P$ 行描述了洞的位置。每一行包含两个用空格分隔的自然数 $x, y$ ($1 \le x \le K, 1 \le y \le W$),表示洞所在的列号和行号。每个格子在描述中恰好出现一次。
输出格式
第一行应包含一个整数 $D$,表示可以钻洞的格子的最大数量。
接下来的 $D$ 行,每行输出两个整数,即可以钻洞的格子的坐标 $x$ 和 $y$(列号,行号)。格子应按字典序排序,先按 $x$ 坐标排序,如果 $x$ 坐标相同,则按 $y$ 坐标排序。如果存在多个大小为 $D$ 的可行格子集合,输出其中任意一个即可。
样例
输入 1
4 3 6 1 1 4 3 3 3 2 3 3 2 4 2
输出 1
2 1 2 2 1
说明
黑色圆圈表示现有的洞。白色圆圈表示可以放置额外洞的格子。