F. Восстановление дерева
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Есть дерево из n вершин. Для каждой вершины известен список всех ее потомков (не обязательно непосредственных). Требуется восстановить дерево или сказать, что такого дерева не существует.

Входные данные

В первой строке записано целое число n (1 ≤ n ≤ 1000) — количество вершин в дереве.

В каждой из следующих n строк сначала записано число ci (0 ≤ ci ≤ n) — количество потомков вершины i, а затем ci различных целых чисел aij (1 ≤ aij ≤ n) — номера потомков вершины i.

Выходные данные

Если ответа не существует, выведите «NO».

Иначе в первой строке выведите «YES», а затем выведите n - 1 строку, по два числа в каждой — номер родителя и потомка. Пары (родитель, потомок) можно выводить в любом порядке.

Примеры
Входные данные
5
4 2 3 4 5
3 3 4 5
2 4 5
1 5
0
Выходные данные
YES
1 2
2 3
3 4
4 5
Входные данные
5
4 2 3 4 5
3 3 4 5
0
1 5
0
Выходные данные
YES
1 2
2 3
2 4
4 5
Входные данные
3
3 2 3 1
3 3 1 2
3 1 2 3
Выходные данные
NO