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$ が与えられたとき、頂点 $i$ と頂点 $j$ の間の最短経路の長さが $B_{i,j} \pmod 5$ となるような、頂点数 $N$ の無向で連結な重みなしグラフが存在するかどうかを判定してください。そのようなグラフが存在する場合は、考えうるグラフを一つ出力してください。
入力
各テストケースには複数のテストケースが含まれます。最初の行には単一の整数 $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$ 番目の整数は、頂点 $i$ と頂点 $i+j$ の間に辺がある場合は $1$、そうでない場合は $0$ とします。
Scoring
YES/NO の回答が正しく、提供されたグラフが正しくない場合でも、各サブタスクの点数の 25% を獲得できます。"YES" と回答した各テストケースについて、部分点を得るためには、$N - 1$ 行からなり、各行が正しい個数の整数($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 つの頂点があり、任意の頂点ペア間の最短距離は $1 \pmod 5$ です。これは、3 つの頂点を持つグラフを作成し、任意の頂点ペア間に辺を張ることで達成可能です。
2 番目のテストケースでは、3 つの頂点があり、頂点 1 と 2 の間の最短距離は $2 \pmod 5$ であり、頂点 1 と 3 の間および頂点 2 と 3 の間の最短距離はどちらも $1 \pmod 5$ です。これは、3 つの頂点を持つグラフを作成し、頂点 1 と 3 の間、および頂点 2 と 3 の間に辺を張ることで達成可能です。
3 番目のテストケースでは、3 つの頂点があり、任意の頂点ペア間の最短距離は $0 \pmod 5$ です。このテストケースを満たすような無向で連結な重みなしグラフは存在しないことが示せます。