Задача №3379. Служба поддержки

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

Кассы занумерованы от \(1\) до \(L\). При поступлении нового вызова, один из инженеров едет к этой кассе из своего текущего положения (или остается там же, если он к тому моменту был в этой кассе). В одной кассе может находиться только один инженер. Вызовы должны обслуживаться в том порядке, в котором они поступают. В каждый момент времени перемещаться может только один инженер. Перемещаться инженеры могут только при вызове и только к той кассе, в которую их вызывают в данный момент. Изначально инженеры находятся в кассах 1, 2 и 3 соответственно. Перемещение инженера из кассы \(p\) в кассу \(q\) стоит \(C(p, q)\) рублей. При этом стоимость проезда из \(p\) в \(q\) и обратно может различаться. Также инженер может совершенно бесплатно оставаться в той же кассе (т.е. \(C(p, p) = 0\)). Цель компании – снизить расходы на обслуживание вызовов. Кроме этого требуется по известной последовательности вызовов определить для каждого из них, каким инженером этот вызов будет обслужен.

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

В первой строке содержаться два числа \(L\) и \(N\) (\(3 \leq L \leq 200\), \(1 \leq N \leq 1000\)) – количество касс и вызовов соответственно. В каждой из следующих \(L\) строк записано по \(L\) целых неотрицательных чисел. Число, стоящее в строке \(p+1\) входного файла и столбце \(q\), задает \(C(p, q)\). Стоимость проезда между двумя кассами – целое неотрицательное число, не превышающее 2000. После этого задано \(N\) чисел – номера касс в той последовательности, в которой происходили вызовы.

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

Выведите в первой строке минимальную суммарную стоимость переездов. Во второй строке для каждого вызова выведите, каким инженером он будет обслужен.

Примеры
Входные данные
5 9
0 1 1 1 1
1 0 2 3 2
1 1 0 4 1
2 1 5 0 1
4 2 3 4 0
4 2 4 1 5 4 3 2 1
Выходные данные
5
1 2 1 2 2 1 3 1 3
Сдать: для сдачи задач необходимо войти в систему