Little Cyan Fish ama los órdenes DFS. Hoy los está estudiando una vez más, pero en grafos simples no dirigidos en lugar de árboles enraizados.
Fije un grafo simple no dirigido y conexo $G$ con $n$ vértices etiquetados del 1 al $n$, y un vértice inicial $s$. El orden DFS de $G$ desde $s$ es la secuencia en la que los vértices son visitados por primera vez mediante la búsqueda en profundidad que se muestra a continuación; los empates se rompen descendiendo siempre al vecino no visitado con la etiqueta más pequeña, por lo que el orden DFS es único.
Algoritmo 1 El orden DFS utilizado en este problema
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 grafo con 7 vértices y 7 aristas. El orden DFS desde el vértice 1 es [1, 2, 3, 7, 4, 5, 6].
Little Cyan Fish ha preparado $n$ permutaciones $a_1, a_2, \dots, a_n$ de $1$ a $n$. Cada $a_i = [a_{i,1}, a_{i,2}, \dots, a_{i,n}]$ es lo que él afirma que sería el orden DFS desde el vértice $i$.
Reconstruya cualquier grafo simple no dirigido y conexo $G$ sobre los vértices $1, 2, \dots, n$ tal que el orden DFS desde cada vértice inicial $i$ sea igual a $a_i$, o determine que no existe tal grafo.
Entrada
Hay múltiples casos de prueba. La primera línea de la entrada contiene un único entero $T$ ($1 \le T$), que indica el número de casos de prueba.
Para cada caso de prueba, la primera línea contiene un único entero $n$ ($1 \le n \le 200$). Cada una de las siguientes $n$ líneas contiene $n$ enteros; la $i$-ésima de estas líneas contiene $a_{i,1}, a_{i,2}, \dots, a_{i,n}$ ($1 \le a_{i,j} \le n$) — el orden DFS que Little Cyan Fish afirma que se produce cuando la búsqueda comienza desde el vértice $i$. Se garantiza que $a_{i,1} = i$, y cada fila $a_i$ es una permutación de $1, 2, \dots, n$.
Se garantiza que la suma de $n^2$ sobre todos los casos de prueba no excede $4 \times 10^4$.
Salida
Para cada caso de prueba, si no existe un grafo adecuado, imprima una sola línea que contenga "No".
De lo contrario, imprima "Yes" en la primera línea. En la siguiente línea, imprima un único entero $m$ ($n - 1 \le m \le \frac{n(n-1)}{2}$) — el número de aristas en su grafo.
Cada una de las siguientes $m$ líneas debe contener dos enteros $u$ y $v$ ($1 \le u, v \le n, u \neq v$), que denotan una arista no dirigida entre los vértices $u$ y $v$. El grafo resultante debe ser simple y conexo, y su orden DFS desde cada vértice $i$ debe ser igual a $a_i$.
Si múltiples grafos satisfacen los requisitos, imprima cualquiera de ellos.
Ejemplos
Entrada 1
2 3 1 2 3 2 1 3 3 2 1 3 1 2 3 2 3 1 3 1 2
Salida 1
Yes 2 1 2 2 3 No
Nota
Explicación del Ejemplo 1: En el caso de prueba, el camino 1-2-3 es un grafo válido: sus órdenes DFS comenzando desde los vértices 1, 2 y 3 son [1, 2, 3], [2, 1, 3] y [3, 2, 1] respectivamente. En el segundo caso de prueba, no existe un grafo adecuado.