Little Cyan Fish adore les ordres DFS. Aujourd'hui, il les étudie à nouveau, mais sur des graphes simples non orientés plutôt que sur des arbres enracinés.
Fixons un graphe simple non orienté connexe $G$ à $n$ sommets étiquetés de $1$ à $n$, et un sommet de départ $s$. L'ordre DFS de $G$ à partir de $s$ est la séquence dans laquelle les sommets sont visités pour la première fois par la recherche en profondeur décrite ci-dessous ; les égalités sont tranchées en descendant toujours vers le voisin non visité ayant la plus petite étiquette, de sorte que l'ordre DFS est unique.
Algorithme 1 L'ordre DFS utilisé dans ce problème
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
Un graphe avec 7 sommets et 7 arêtes. L'ordre DFS à partir du sommet 1 est [1, 2, 3, 7, 4, 5, 6].
Little Cyan Fish a préparé $n$ permutations $a_1, a_2, \dots, a_n$ de $1$ à $n$. Chaque $a_i = [a_{i,1}, a_{i,2}, \dots, a_{i,n}]$ est ce qu'il prétend être l'ordre DFS à partir du sommet $i$.
Reconstruisez n'importe quel graphe simple non orienté connexe $G$ sur les sommets $1, 2, \dots, n$ tel que l'ordre DFS à partir de chaque sommet de départ $i$ soit égal à $a_i$, ou déterminez qu'aucun graphe de ce type n'existe.
Entrée
Il y a plusieurs cas de test. La première ligne de l'entrée contient un entier unique $T$ ($1 \le T$), indiquant le nombre de cas de test.
Pour chaque cas de test, la première ligne contient un entier unique $n$ ($1 \le n \le 200$). Chacune des $n$ lignes suivantes contient $n$ entiers ; la $i$-ième de ces lignes contient $a_{i,1}, a_{i,2}, \dots, a_{i,n}$ ($1 \le a_{i,j} \le n$) — l'ordre DFS que Little Cyan Fish prétend être produit lorsque la recherche commence à partir du sommet $i$. Il est garanti que $a_{i,1} = i$, et chaque ligne $a_i$ est une permutation de $1, 2, \dots, n$.
Il est garanti que la somme des $n^2$ sur tous les cas de test n'excède pas $4 \times 10^4$.
Sortie
Pour chaque cas de test, si aucun graphe approprié n'existe, affichez une seule ligne contenant « No ».
Sinon, affichez « Yes » sur la première ligne. Sur la ligne suivante, affichez un entier unique $m$ ($n - 1 \le m \le \frac{n(n-1)}{2}$) — le nombre d'arêtes dans votre graphe.
Chacune des $m$ lignes suivantes doit contenir deux entiers $u$ et $v$ ($1 \le u, v \le n, u \neq v$), désignant une arête non orientée entre les sommets $u$ et $v$. Le graphe résultant doit être simple et connexe, et son ordre DFS à partir de chaque sommet $i$ doit être égal à $a_i$.
Si plusieurs graphes satisfont les exigences, affichez l'un d'entre eux.
Exemples
Entrée 1
2 3 1 2 3 2 1 3 3 2 1 3 1 2 3 2 3 1 3 1 2
Sortie 1
Yes 2 1 2 2 3 No
Remarque 1
Dans le cas de test, le chemin $1 - 2 - 3$ est un graphe valide : ses ordres DFS à partir des sommets 1, 2 et 3 sont respectivement $[1, 2, 3]$, $[2, 1, 3]$ et $[3, 2, 1]$. Dans le second cas de test, aucun graphe approprié n'existe.