Задача C. Таксую для души

Автор:Pavel Baderik   Ограничение времени:2 сек
Входной файл:input.txt   Ограничение памяти:256 Мб
Выходной файл:output.txt  
Максимальный балл:100  

Условие

Вася — таксист с большой душой. Он обожает водить машину, чувствовать город под колесами, но глубоко внутри он настоящий программист. Поэтому всем своим пассажирам он говорит, что является успешным программистом, а таксует так, для души.

Но именно сегодня навигатор у Вани сломался и теперь ему нужно быстро написать программу, которая найдёт кратчайший путь из точки A в точку B, дабы не опозориться перед пассажиром. Помогите ему в этом деле.

Город является прямоугольником с высотой H и шириной W, где каждая клетка — это перекрёсток. Всё было бы хорошо, но Вася знает, что сейчас в городе из-за аварий, ремонтов, пришельцев закрыты N перекрёстков с номерами a1, a2, ..., aN. Нумерует перекрёстки он по принципу: a = i * w + j, когда перекрёсток на ходится на пересечении i улицы и j улицы.

Так же Вася напомнил, что существует правило проезда перекрёстка, которое гласит, что необходимо уступать всем машинам, что оказались справа. Поэтому если Вася подъезжает на перекрёсток, то дальше он может сразу (за 1 времени) повернуть направо, пропустить машину и проехать прямо (2 единицы времени), пропустить машину и справа встречную, а затем повернуть налево (3 единицы времени), пропустить машины со всех направлений и развернуться (4 единицы).

Формат входного файла

В первой строке подаются два целых числа: 1 ≤ H, W ≤ 3 * 103, разделённые пробелом.

Во второй строке идут три целых числа: 1 ≤ A, B ≤ H * W, 0 ≤ N ≤ min(H, W) / 2.

В третей строке идут N целых чисел: 1 ≤ ai ≤ H * W.

Формат выходного файла

Выведите одно целое число — кратчайшее расстояние из точки A в точку B. Если добраться невозможно, то выведите -1.

Примечание

Вася может выбрать исходное направление движения своего такси.

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1
10 10
1 50 5
3 14 23 32 41
-1
2
4 4
1 2 3
9 11 12
1

0.127s 0.011s 13