CF1250M SmartGarden
题目描述
Berland Gardeners United Inc. 雇佣你参与名为“SmartGarden”的项目。该项目的主要功能是实现花园的自动浇水。
形式化地,花园可以表示为一个 $n \times n$ 的方阵,行编号为 $1$ 到 $n$(从上到下),列编号为 $1$ 到 $n$(从左到右)。花园的每个格子中要么有植物,要么有石板。
已知石板位于矩阵的主对角线上,以及所有在主对角线下方、且与主对角线至少有一条边相邻的格子。花园中其余的格子都种有植物。

如上图所示为 $n=5$ 时的花园示例。
在项目实施过程中,你设计了一个智能机器人,能够接收一系列指令,并依次执行。每条指令包含:
- 一组水平线(即矩阵中的若干行);
- 一组垂直线(即矩阵中的若干列)。
每执行一条指令,机器人只会给指定的行和指定的列的交叉点处的格子浇水。也就是说,如果你指定了 $r$ 行和 $c$ 列,那么恰好会有 $r \times c$ 个格子被浇水。
在给客户的演示中,你曾让机器人一次性给整个花园浇水。为此,你准备了一条包含所有 $n$ 行和所有 $n$ 列的指令。
不幸的是,在演示前 5 小时,你得知 Berland Gardeners United Inc. 的 CEO 也将出席演示。更糟糕的是,他很可能会站在某块石板上!
现在你需要为机器人设计一组指令,使其能够给所有植物浇水,并且不会给任何有石板的格子浇水。由于“SmartGarden”还处于测试阶段,指令总数不得超过 $50$ 条。
请编写程序,对于给定的花园大小 $n$,输出不超过 $50$ 条指令,使机器人能够给所有植物浇水且不会浇到石板。允许对同一株植物多次浇水。
输入格式
输入仅一行,包含一个整数 $n$($2 \le n \le 5000$),表示花园的大小。
输出格式
第一行输出机器人指令的总数 $k$($1 \le k \le 50$)。接下来的 $2 \times k$ 行描述所有指令。每条指令用两行描述。第一行为该指令涉及的行,第二行为该指令涉及的列。每行的格式如下:
- 首先是一个整数 $x$,表示该列表中元素的个数;
- 接下来是 $x$ 个互不相同的整数,范围均为 $1$ 到 $n$,分别表示选中的行(第一行)和选中的列(第二行)。
如果存在多种方案,输出任意一种均可。
说明/提示
由 ChatGPT 4.1 翻译