Little Cyan Fish uwielbia porządki DFS. Dziś bada je ponownie, ale tym razem na nieskierowanych grafach prostych, a nie na drzewach ukorzenionych.
Ustalmy spójny, nieskierowany graf prosty $G$ o $n$ wierzchołkach ponumerowanych od $1$ do $n$ oraz wierzchołek startowy $s$. Porządek DFS grafu $G$ z wierzchołka $s$ to sekwencja, w której wierzchołki są odwiedzane po raz pierwszy przez poniższy algorytm przeszukiwania w głąb; remisy rozstrzygane są zawsze poprzez zejście do nieodwiedzonego sąsiada o najmniejszym numerze, dzięki czemu porządek DFS jest unikalny.
Algorytm 1 Porządek DFS użyty w tym zadaniu
1: procedure DFS(vertex x)
2: Mark x as visited
3: Append x to the end of dfs_order
4: for each vertex y adjacent to x in G, in ascending order of label do
5: if y is not yet visited then
6: DFS(y)
7: end if
8: end for
9: end procedure
10:
11: procedure GENERATE(G, vertex s)
12: Mark all vertices as unvisited
13: Let dfs_order be an empty list
14: DFS(s)
15: return dfs_order
16: end procedure
Graf o 7 wierzchołkach i 7 krawędziach. Porządek DFS z wierzchołka 1 to [1, 2, 3, 7, 4, 5, 6].
Little Cyan Fish przygotował $n$ permutacji $a_1, a_2, \dots, a_n$ liczb od $1$ do $n$. Każde $a_i = [a_{i,1}, a_{i,2}, \dots, a_{i,n}]$ jest tym, co według niego powinno być porządkiem DFS z wierzchołka $i$.
Zrekonstruuj dowolny spójny, nieskierowany graf prosty $G$ o wierzchołkach $1, 2, \dots, n$ taki, że porządek DFS z każdego wierzchołka startowego $i$ jest równy $a_i$, lub określ, że taki graf nie istnieje.
Wejście
Dostępnych jest wiele przypadków testowych. Pierwsza linia wejścia zawiera pojedynczą liczbę całkowitą $T$ ($1 \le T$), oznaczającą liczbę przypadków testowych.
Dla każdego przypadku testowego pierwsza linia zawiera pojedynczą liczbę całkowitą $n$ ($1 \le n \le 200$). Każda z kolejnych $n$ linii zawiera $n$ liczb całkowitych; $i$-ta z tych linii zawiera $a_{i,1}, a_{i,2}, \dots, a_{i,n}$ ($1 \le a_{i,j} \le n$) — porządek DFS, który według Little Cyan Fish powstaje, gdy przeszukiwanie rozpoczyna się od wierzchołka $i$. Gwarantuje się, że $a_{i,1} = i$, a każdy wiersz $a_i$ jest permutacją liczb $1, 2, \dots, n$.
Gwarantuje się, że suma $n^2$ we wszystkich przypadkach testowych nie przekracza $4 \times 10^4$.
Wyjście
Dla każdego przypadku testowego, jeśli żaden odpowiedni graf nie istnieje, wypisz pojedynczą linię zawierającą „No”.
W przeciwnym razie wypisz „Yes” w pierwszej linii. W następnej linii wypisz pojedynczą liczbę całkowitą $m$ ($n - 1 \le m \le \frac{n(n-1)}{2}$) — liczbę krawędzi w twoim grafie.
Każda z kolejnych $m$ linii musi zawierać dwie liczby całkowite $u$ oraz $v$ ($1 \le u, v \le n, u \neq v$), oznaczające nieskierowaną krawędź między wierzchołkami $u$ oraz $v$. Wynikowy graf musi być prosty i spójny, a jego porządek DFS z każdego wierzchołka $i$ musi być równy $a_i$.
Jeśli wymagania spełnia wiele grafów, wypisz dowolny z nich.
Przykład
Wejście 1
2 3 1 2 3 2 1 3 3 2 1 3 1 2 3 2 3 1 3 1 2
Wyjście 1
Yes 2 1 2 2 3 No
Uwagi
Wyjaśnienie przykładu 1: W pierwszym przypadku testowym ścieżka $1 - 2 - 3$ jest poprawnym grafem: jego porządki DFS zaczynające się od wierzchołków 1, 2 i 3 to odpowiednio [1, 2, 3], [2, 1, 3] oraz [3, 2, 1]. W drugim przypadku testowym nie istnieje żaden odpowiedni graf.