Олимпиадный тренинг

Задача . D. Dogeforces


В компании Dogeforces работают \(k\) сотрудников. У каждого сотрудника, кроме сотрудников нижнего звена, есть не менее \(2\) подчиненных. У сотрудников нижнего звена нет подчиненных. У каждого сотрудника (кроме руководителя компании) есть ровно один непосредственный начальник. Руководитель компании является непосредственным или косвенным начальником всех сотрудников. Известно, что в Dogeforces любой начальник получает зарплату строго больше, чем все его подчиненные.

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

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

Первая строка содержит одно целое число \(n\) (\(2 \le n \le 500\)) — количество сотрудников нижнего звена.

Далее следует \(n\) строк, где \(i\)-я строка содержит \(n\) целых чисел \(a_{i,1}, a_{i,2}, \dots, a_{i,n}\) (\(1 \le a_{i,j} \le 5000\)) — зарплата общего начальника сотрудников с номерами \(i\) и \(j\). Гарантируется, что \(a_{i,j} = a_{j,i}\). Обратите внимание, что \(a_{i,i}\) равно зарплате \(i\)-го сотрудника.

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

В первую строку выведите одно целое число \(k\) — количество сотрудников в компании.

Во второй строке выведите \(k\) целых чисел \(c_1, c_2, \dots, c_k\), где \(c_i\) — зарплата сотрудника с номером \(i\).

В третьей строке выведите одно целое число \(r\) — номер сотрудника, который является руководителем компании.

В последующих \(k-1\) строках выведите по два целых числа \(v\) и \(u\) (\(1 \le v, u \le k\)) — номер сотрудника и его непосредственного начальника.

Обратите внимание, что сотрудники нижнего звена имею номера с \(1\) по \(n\), а для остальных сотрудников вам предстоит назначить номера от \(n+1\) до \(k\). Если корректных структур компании несколько, вы можете вывести любую из них.

Примечание

Одна из возможных структур в первом примере:


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

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя