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

Задача . B. Утренняя пробежка


Волонтеры 2050 организуют мероприятие «Беги! Догони восходящее солнце». Начав 25 апреля в 7:30, участники пробегут по 6-километровому маршруту вокруг города Юньци.

На маршруте будет \(n+1\) контрольный пункт. Они пронумерованы \(0\), \(1\), ..., \(n\). Участники начнут в контрольном пункте \(0\) и закончат в пункте \(n\). Ни один контрольный пункт нельзя пропустить — они должны будут пробежать от пункта \(0\) до пункта \(1\), потом от пункта \(1\) до пункта \(2\), и так далее. Изучите картинку из секции примечание для разъяснения.

Между каждой парой соседних контрольных пунктов есть \(m\) различных путей на выбор. Для всех \(1\le i\le n\), чтобы пробежать от пункта \(i-1\) до пункта \(i\), участник должен выбрать ровно один путь из \(m\) возможных. Длина \(j\)-го пути между пунктами \(i-1\) и \(i\) равняется \(b_{i,j}\) для всех \(1\le j\le m\) и \(1\le i\le n\).

Чтобы протестировать маршрут, у нас есть \(m\) бегунов. Каждый бегун должен пробежать от пункта \(0\) до пункта \(n\) один раз, посетив все промежуточные пункты. Каждый путь между каждой парой соседних контрольных пунктов должен быть использован ровно одним бегуном. Если бегун выберет путь длины \(l_i\) между пунктами \(i-1\) и \(i\) (\(1\le i\le n\)), его усталость будет равна \(\)\min_{i=1}^n l_i,\(\) то есть минимальной длине из путей, по которым он пробежал.

Выберите пути для \(m\) бегунов так, чтобы их суммарная усталость была минимальна.

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

Во входных данных находятся несколько наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \le t \le 10\,000\)) — количество наборов входных данных. Далее следуют наборы входных данных.

Первая строка каждого набора входных данных содержит два целых числа \(n\) и \(m\) (\(1 \leq n,m \leq 100\)).

В \(i\)-й из следующих \(n\) строк даны \(m\) целых чисел \(b_{i,1}\), \(b_{i,2}\), ..., \(b_{i,m}\) (\(1 \le b_{i,j} \le 10^9\)).

Гарантируется, что сумма \(n\cdot m\) по всем наборам входных данных не превышает \(10^4\).

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

Для каждого набора входных данных выведите \(n\) строк. \(j\)-е число в \(i\)-й строке должно равняться длине пути, который \(j\)-й бегун выберет между контрольными пунктами \(i-1\) и \(i\). В \(i\)-й строке должно быть ровно \(m\) целых чисел и эти числа должны образовывать перестановку чисел \(b_{i, 1}\), ..., \(b_{i, m}\) для всех \(1\le i\le n\).

Если существует несколько решений, выведите любое.

Примечание

В первом наборе входных данных сумма усталостей равна \(\min(2,5) + \min(3,3) + \min(4,1) = 6\).

Во втором наборе входных данных сумма усталостей равна \(\min(2,4,3) + \min(3,1,5) = 3\).


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

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

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