Петя увлёкся алгоритмами сжатия данных. Он уже изучил форматы
gz
,
bz
,
zip
и несколько других. Воодушевившись новыми знаниями, Петя собрался разработать свой формат сжатия и назвать его
dis
.
Петя решил сжимать таблицы. У него есть таблица, состоящая из
n
строк и
m
столбцов, заполненная целыми положительными числами. Он хочет заменить значения элементов таблицы на целые положительные числа так, чтобы отношение элементов в каждой строке и каждом столбце не изменилось. То есть, если в некоторой строке исходной таблицы
a
i
,
j
<
a
i
,
k
, то и в сжатой таблице
a
'
i
,
j
<
a
'
i
,
k
, и если
a
i
,
j
=
a
i
,
k
, то
a
'
i
,
j
=
a
'
i
,
k
. Аналогично, если в некотором столбце исходной таблицы
a
i
,
j
<
a
p
,
j
, то и в сжатой таблице
a
'
i
,
j
<
a
'
p
,
j
, и если
a
i
,
j
=
a
p
,
j
, то
a
'
i
,
j
=
a
'
p
,
j
.
Поскольку б'{о}льшие значения требуют больше места для хранения, максимальное значение элемента получившейся матрицы должно быть как можно меньше.
В теории Петя мастер, но вот писать код он не любит. Помогите ему реализовать формат сжатия
dis
.
Выходные данные
Выведите сжатую таблицу:
n
строк, содержащих по
m
чисел.
Если существует несколько ответов, минимизирующих максимальное число, то разрешается вывести любой из них.
Система оценки
Тесты к этой задаче состоят из восьми групп. Баллы за каждую группу ставятся только при прохождении всех тестов группы и всех тестов некоторых предыдущих групп.
Offline-проверка
означает, что результаты тестирования вашего решения на данной группе станут доступны только после окончания соревнования.
Примечание
В первом примере
a
1, 2
≠
a
2, 1
, но, поскольку они не располагаются в одной строке или в одном столбце, при сжатии их можно сделать равными.