给定一个具有 $N$ 个顶点和 $\frac{N(N-3)}{2}$ 条边的简单无向图。该图由 $N$ 个二进制字符串 $S_1, S_2, \dots, S_N$ 表示,其中 $S_i$ 的第 $j$ 个字符为 $1$ 表示顶点 $i$ 和顶点 $j$ 之间存在一条边,否则为 $0$。特别地,$S_i$ 的第 $i$ 个字符始终为 $0$。
图中每个顶点的度数恰好为 $N - 3$。
现在,你需要为图中的每条边分配一个正整数。如果任意两条共享公共顶点的边被分配了不同的整数,则称此分配为边着色。在任何有效的边着色中,所使用的最大整数的最小值称为该图的边色数。
你的任务是确定该图的边色数,并找到一种实现该数值的有效边着色方案。
输入格式
输入格式如下:
$N$ $S_1$ $S_2$ $\vdots$ $S_N$
- $4 \le N \le 300$。
- $S_1, S_2, \dots, S_N$ 是长度为 $N$ 的仅包含 $0$ 和 $1$ 的二进制字符串。
- 给定的图是一个简单无向图,其中每个顶点的度数为 $N - 3$。
输出格式
输出边色数 $C$,随后输出一个 $N \times N$ 的网格,其中单元格 $(i, j)$ 包含分配给顶点 $i$ 和顶点 $j$ 之间边的整数 $c_{i,j}$。格式如下:
$C$ $c_{1,1} \ c_{1,2} \ \dots \ c_{1,N}$ $c_{2,1} \ c_{2,2} \ \dots \ c_{2,N}$ $\vdots$ $c_{N,1} \ c_{N,2} \ \dots \ c_{N,N}$
如果顶点 $i$ 和顶点 $j$ 之间没有边,则输出 $-1$ 作为 $c_{i,j}$。特别地,$c_{i,i}$ 应始终为 $-1$。
如果存在多种有效的输出,则任何一种都被视为正确。
样例
输入格式 1
6 011100 101010 110001 100011 010101 001110
输出格式 1
3 -1 2 3 1 -1 -1 2 -1 1 -1 3 -1 3 1 -1 -1 -1 2 1 -1 -1 -1 2 3 -1 3 -1 2 -1 1 -1 -1 2 3 1 -1
说明
在第一个样例中,顶点 $1$ 与顶点 $2, 3, 4$ 相连。这些边必须被分配不同的整数,因此边色数至少为 $3$。
在样例输出中,连接顶点 $1$ 与顶点 $2, 3, 4$ 的边分别被分配了整数 $2, 3, 1$。所有共享公共顶点的边都具有不同的整数。对于所有其他顶点,该性质同样成立,满足边着色条件,且边色数为 $3$。
输入格式 2
5 01001 10100 01010 00101 10010
输出格式 2
3 -1 2 -1 -1 1 2 -1 3 -1 -1 -1 3 -1 1 -1 -1 -1 1 -1 3 1 -1 -1 3 -1