Ограничения: время – 5s/10s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (0)

На доске размером N × M разложено несколько монет разного номинала. В клетке может лежать не более одной монеты.
Можно поставить шахматного коня на любую клетку доски, в том числе занятую монетой, и затем,
делая ходы по шахматным правилам, собирать монеты на клетках. В конце путешествия конь должен вернуться на начальную клетку.
За выполнение каждого хода нужно заплатить одну денежную единицу. Можно проходить по клеткам доски несколько раз и
собрать не все монеты. Допустимо также круговое путешествие в 0 ходов, при котором конь не двигается с начальной клетки.
Выигрыш в этой задаче определяется как разница между стоимостью собранных монет и количеством ходов, сделанных конем.
Напишите программу, вычисляющую максимальный выигрыш и последовательность ходов, которая позволит его получить.
Первая строка ввода содержит три целых числа – размеры доски N и M (4\ ≤\ N,\ M\ ≤\ 100) и количество монет K
(1\ ≤\ K\ ≤\ 15). Далее следует K строк, содержащих по три целых числа – номера строки r_i (1\ ≤\ r_i\ ≤\ N) и
столбца c_i (1\ ≤\ c_i\ ≤\ M) клетки, в
которой находится i-я монета, и номинал монеты a_i (1≤\ a_i\ ≤\ 100).
В первой строке вывести одно целое число – максимальный выигрыш, во второй строке вывести последовательность
номеров строк и столбцов клеток в порядке посещения их шахматным конем. Если существует несколько вариантов последовательности
ходов с одинаковым выигрышем, то можно вывести любой из них.
Пример ввода
8 8 4
2 6 10
4 8 2
6 5 15
7 5 2
Пример вывода
19
4 6 3 4 2 6 3 8 5 7 6 5 4 6