Busy Beaver 正在玩一個無向、連通且無權重的圖,該圖具有 $N$ ($2 \le N \le 500$) 個頂點,編號從 $1$ 到 $N$。對於每一對頂點 $1 \le i < j \le N$,他在餐巾紙上寫下了從頂點 $i$ 到頂點 $j$ 的最短路徑長度 $A_{i,j}$。由於意識到這些數字佔用了餐巾紙上太多的空間,Busy Beaver 決定只寫下 $B_{i,j}$,即 $A_{i,j} \pmod 5$ 的值。
現在,Busy Beaver 把他的圖弄丟了,只剩下寫有 $B_{i,j}$ 值的餐巾紙。請幫助 Busy Beaver 重建一個可能的圖,或者判斷不存在這樣的圖,說明他犯了錯誤。
形式化地說,給定 $N$ 和 $0 \le B_{i,j} < 5$ 的 $B_{i,j}$,判斷是否存在一個無向、連通且無權重的圖,其具有 $N$ 個頂點,且頂點 $i$ 和 $j$ 之間的最短路徑長度與 $B_{i,j} \pmod 5$ 同餘。如果存在這樣的圖,請輸出任何一個可能的圖。
輸入格式
每個測試包含多個測試案例。第一行包含一個單一整數 $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$ 個頂點,且任意兩頂點間的最短距離皆為 $1 \pmod 5$。這可以透過建構一個具有 $3$ 個頂點且任意兩頂點間皆有邊的圖來達成。
在第二個測試案例中,有 $3$ 個頂點,頂點 $1$ 和 $2$ 之間的最短距離為 $2 \pmod 5$,而頂點 $1$ 和 $3$ 以及頂點 $2$ 和 $3$ 之間的最短距離皆為 $1 \pmod 5$。這可以透過建構一個具有 $3$ 個頂點,且頂點 $1$ 與 $3$ 之間以及頂點 $2$ 與 $3$ 之間有邊的圖來達成。
在第三個測試案例中,有 $3$ 個頂點,且任意兩頂點間的最短距離皆為 $0 \pmod 5$。可以證明沒有任何無權重、無向、連通的圖能滿足此測試案例。