Busy Beaver 正在研究一个无向、连通、无权图,该图有 $N$ ($2 \le N \le 500$) 个顶点,编号从 $1$ 到 $N$。对于每一对顶点 $1 \le i < j \le N$,他都在餐巾纸上记下了从顶点 $i$ 到顶点 $j$ 的最短路径长度 $A_{i,j}$。由于这些数字占用了太多空间,Busy Beaver 决定只在餐巾纸上记录 $A_{i,j} \pmod 5$ 的值,记为 $B_{i,j}$。
现在,Busy Beaver 弄丢了他的图,只剩下记录了 $B_{i,j}$ 值的餐巾纸。请帮助 Busy Beaver 重构一个可能的图,或者判断不存在这样的图,即他记错了。
形式化地说,给定 $N$ 和 $0 \le B_{i,j} < 5$ 的 $B_{i,j}$,判断是否存在一个无向、连通、无权图,使得顶点 $i$ 和 $j$ 之间的最短路径长度模 $5$ 等于 $B_{i,j}$。如果存在这样的图,请输出任意一个可能的图。
输入格式
每个测试点包含多个测试用例。第一行包含一个整数 $t$ ($1 \le t \le 100$),表示测试用例的数量。接下来是各测试用例的描述。
每个测试用例的第一行包含一个正整数 $N$。
接下来有 $N-1$ 行输入。第 $i$ 行包含 $N-i$ 个以空格分隔的正整数。第 $i$ 行的第 $j$ 个整数表示 $B_{i,j+i}$。
保证所有测试用例中 $N$ 的总和不超过 $500$。
输出格式
对于每个测试用例,如果存在可能的图,输出 "YES",否则输出 "NO"。答案不区分大小写。例如,字符串 "yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定回答。
如果你的程序回答 "YES",则额外输出 $N-1$ 行。第 $i$ 行应包含 $N-i$ 个整数。第 $i$ 行的第 $j$ 个整数如果为 $1$,表示顶点 $i$ 和顶点 $i+j$ 之间存在边,否则为 $0$。
子任务
对于每个子任务,如果 YES/NO 回答正确,但提供的图不正确,你将获得该子任务 $25\%$ 的分数。对于每个回答为 "YES" 的测试用例,你必须输出恰好 $N-1$ 行,且第 $i$ 行包含 $N-i$ 个整数($0$ 或 $1$),以获得部分分数。
- ($20$ 分):所有测试用例中 $N$ 的总和不超过 $10$。
- ($80$ 分):无附加限制。
样例
样例输入 1
3 3 1 1 1 3 2 1 1 3 0 0 0
样例输出 1
YES 1 1 1 YES 0 1 1 NO
说明
在第一个测试用例中,有 $3$ 个顶点,任意一对顶点之间的最短距离模 $5$ 为 $1$。这可以通过构造一个包含 $3$ 个顶点且任意一对顶点之间都有边的图来实现。
在第二个测试用例中,有 $3$ 个顶点,顶点 $1$ 和 $2$ 之间的最短距离模 $5$ 为 $2$,顶点 $1$ 和 $3$ 以及顶点 $2$ 和 $3$ 之间的最短距离模 $5$ 均为 $1$。这可以通过构造一个包含 $3$ 个顶点,且顶点 $1$ 与 $3$ 之间、顶点 $2$ 与 $3$ 之间有边的图来实现。
在第三个测试用例中,有 $3$ 个顶点,任意一对顶点之间的最短距离模 $5$ 为 $0$。可以证明,不存在满足此测试用例的无权、无向、连通图。