Маленькая голубая рыбка любит DFS-порядки. Сегодня она изучает их снова, но на этот раз для неориентированных простых графов, а не для корневых деревьев.
Зафиксируем связный неориентированный простой граф $G$ с $n$ вершинами, пронумерованными от $1$ до $n$, и начальную вершину $s$. DFS-порядок графа $G$ из вершины $s$ — это последовательность, в которой вершины посещаются впервые при выполнении поиска в глубину, описанного ниже; при выборе между несколькими вариантами всегда выбирается непосещенный сосед с наименьшим номером, поэтому DFS-порядок уникален.
Алгоритм 1: DFS-порядок, используемый в этой задаче
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
Граф с 7 вершинами и 7 ребрами. DFS-порядок из вершины 1 равен [1, 2, 3, 7, 4, 5, 6].
Маленькая голубая рыбка подготовила $n$ перестановок $a_1, a_2, \dots, a_n$ чисел от $1$ до $n$. Каждая $a_i = [a_{i,1}, a_{i,2}, \dots, a_{i,n}]$ — это то, что, по её утверждению, является DFS-порядком при поиске из вершины $i$.
Восстановите любой связный неориентированный простой граф $G$ на вершинах $1, 2, \dots, n$ такой, что DFS-порядок из каждой начальной вершины $i$ равен $a_i$, или определите, что такого графа не существует.
Входные данные
Имеется несколько тестовых случаев. Первая строка входных данных содержит единственное целое число $T$ ($1 \le T$), указывающее количество тестовых случаев.
Для каждого тестового случая первая строка содержит единственное целое число $n$ ($1 \le n \le 200$). Каждая из следующих $n$ строк содержит $n$ целых чисел; $i$-я из этих строк содержит $a_{i,1}, a_{i,2}, \dots, a_{i,n}$ ($1 \le a_{i,j} \le n$) — DFS-порядок, который, по утверждению Маленькой голубой рыбки, получается при поиске из вершины $i$. Гарантируется, что $a_{i,1} = i$, и каждая строка $a_i$ является перестановкой чисел $1, 2, \dots, n$.
Гарантируется, что сумма $n^2$ по всем тестовым случаям не превышает $4 \times 10^4$.
Выходные данные
Для каждого тестового случая, если подходящего графа не существует, выведите одну строку, содержащую «No».
В противном случае выведите «Yes» в первой строке. В следующей строке выведите единственное целое число $m$ ($n - 1 \le m \le \frac{n(n-1)}{2}$) — количество ребер в вашем графе.
Каждая из следующих $m$ строк должна содержать два целых числа $u$ и $v$ ($1 \le u, v \le n, u \neq v$), обозначающих неориентированное ребро между вершинами $u$ и $v$. Полученный граф должен быть простым и связным, а его DFS-порядок из каждой вершины $i$ должен быть равен $a_i$.
Если условиям удовлетворяют несколько графов, выведите любой из них.
Примеры
Пример 1
2 3 1 2 3 2 1 3 3 2 1 3 1 2 3 2 3 1 3 1 2
Выходные данные 1
Yes 2 1 2 2 3 No
Примечание
В первом тестовом случае путь $1-2-3$ является подходящим графом: его DFS-порядки из вершин $1, 2$ и $3$ равны $[1, 2, 3]$, $[2, 1, 3]$ и $[3, 2, 1]$ соответственно. Во втором тестовом случае подходящего графа не существует.