#CF1965E. 相连的立方体

相连的立方体

E. 连通立方体

单点时限:4 秒 内存限制:256 MB

现有 nmn \cdot m 个单位立方体,位于坐标 (1,1,1)(1,1,1)(n,m,1)(n,m,1) 的位置。每个立方体都属于 kk 种颜色之一。

你需要添加额外的立方体(可放置在任意整数坐标处),使得每一种颜色的所有立方体构成连通块。 连通的定义:两个立方体共享一个面,则视为连通。

换句话说:对于同一种颜色 cc 的任意两个立方体,都可以通过仅移动同色、面相邻的立方体,从一个到达另一个。

初始立方体都放置在房间的角落位置。 平面 x=0x=0y=0y=0z=0z=0 上完全填满了无色立方体,禁止你在这些平面或任意负坐标处放置额外立方体。

请你给出一个最多使用 41054 \cdot 10^5 个额外立方体的方案;如果无解,输出 1-1。 题目保证:若存在解,则一定存在满足立方体数量限制的合法方案。

输入格式

第一行输入三个整数 n,m,kn, m, k2n,m,k502 \le n,m,k \le 50) 分别表示初始立方体的行数、列数,以及颜色总数。

接下来 nn 行,每行包含 mm 个整数: 第 ii 行的第 jj 个数为 aija_{ij}1aijk1 \le a_{ij} \le k),表示坐标 (i,j,1)(i,j,1) 处立方体的颜色。 保证颜色 11kk 每种颜色至少出现一次。

输出格式

如果无解,输出一个整数 1-1

否则: 第一行输出一个整数 pp0p41050 \le p \le 4 \cdot 10^5),表示额外添加的立方体数量。 接下来 pp 行,每行输出四个整数 x,y,z,cx, y, z, c1x,y,z1061 \le x,y,z \le 10^61ck1 \le c \le k),表示在坐标 (x,y,z)(x,y,z) 处添加一个颜色为 cc 的立方体。

要求:

  1. 输出中任意两个立方体坐标不重复;
  2. 输出的坐标不能与初始立方体的坐标重合;
  3. 任意合法方案均可输出。

样例输入 1

3 4 3
3 2 3 1
1 1 1 1
1 3 3 2

样例输出 1

13
1 1 2 3
1 3 2 3
2 1 2 3
2 2 2 3
2 3 2 3
3 3 2 3
1 2 2 2
1 2 3 2
1 3 3 2
1 4 3 2
2 4 3 2
3 4 3 2
3 4 2 2

样例输入 2

2 2 2
2 1
1 2

样例输出 2

9
1 3 1 1
2 3 1 1
3 1 1 1
3 2 1 1
3 3 1 1
1 1 2 2
1 2 2 2
2 1 2 2
2 2 2 2

样例说明

第一个样例的配图中:红色=1,蓝色=2,绿色=3。