Задача №113914. Квантовая телепортация
Ученые в IT-компании разработали квантовый суперкомпьютер. Опытный образец, разработанный учеными, содержит n × m квантовых процессоров, организованных в виде сетки из n строк и m столбцов. Обозначим процессор в j -й ячейке i -й строки как ( i , j ) .
Ученые запустили квантовый суперкомпьютер, однако после окончания вычислений произошел сбой в электропитании, из-за чего часть процессоров оказалась повреждена. В распоряжении исследователей осталось всего лишь k уцелевших процессоров.
Результат вычислений находится в памяти процессора (1, 1) , а устройство вывода подключено к процессору ( n , m ) . Для передачи информации от одного процессора к другому используется квантовая телепортация. Особенность квантовой телепортации заключается в том, что с увеличением расстояния возникает нестабильность, требующая дополнительной энергии. Поэтому чтобы обеспечить перенос информации от процессора ( x i , y i ) к процессору ( x j , y j ) требуется 2 max (| x i - x j |, | y i - y j |) единиц энергии. Ученые хотят перенести информацию с процессора (1, 1) на процессор ( n , m ) , затратив минимальное количество энергии. При этом можно использовать в качестве промежуточных другие уцелевшие процессоры. Использовать поврежденные процессоры нельзя.
Требуется написать программу, которая по описанию уцелевших процессоров определяет, каким образом необходимо передавать данные между процессорами, чтобы перенести информацию из процессора (1, 1) в процессор ( n , m ) , потратив минимальное суммарное количество энергии.
В первой строке входных данных находятся три целых числа n , m и k — количество строк и столбцов в сетке и количество оставшихся невредимыми после отключения электричества процессоров ( 2 ≤ n , m , k ≤ 10 000 ).
Далее следуют k строк, в i -й из которых содержатся два целых числа x i и y i —номер строки и столбца i -го уцелевшего процессора ( 1 ≤ x i ≤ n , 1 ≤ y i ≤ m ).
Гарантируется, что ( x 1 , y 1 ) = (1, 1) , ( x k , y k ) = ( n , m ) . Все процессоры находятся в разных ячейках сетки.
Первая строка выходных данных должна содержать число L — количество процессоров, которые будут использованы при передаче информации.
Вторая строка должна содержать L чисел — номера уцелевших процессоров в том порядке, в котором они будут получать информацию. Первым должен быть выведен процессор номер 1 , а последним — процессор номер k .
Если вариантов передачи информации, минимизирующих затраченную энергию, несколько, то можно вывести любой из них.

4 5 3 1 1 2 3 4 5
3 1 2 3
5 6 9 1 1 4 3 4 6 2 5 3 1 3 3 3 6 5 4 5 6
5 1 6 2 8 9