LeaperLad прокидається в LatticeLand на диску, підвішеному над озером лави. Він бачить свій HeloPak на одному з дисків; з ним він зможе втекти з цієї підступної пастки.
Диски розташовані досить далеко один від одного; без певного імпульсу він може стрибнути лише на сусідній диск. Як тільки він набирає швидкість для цього стрибка, він може прискорюватися на кожному диску, на який потрапляє.
Він помічає, що диски розташовані у прямокутній сітці, з диском на кожній точці сітки. Він обчислює, що на кожному диску він може прискорити або уповільнити свою швидкість на одну одиницю в горизонтальному або вертикальному напрямку (але не в обох напрямках одночасно). Або ж він може просто підтримувати свою швидкість, коли ступає на диск. Таким чином, по прямій лінії, з початкового положення, він може стрибнути на одну одиницю, потім на дві одиниці, потім на три, потім на дві, потім на одну.
Деякі пари дисків з'єднані стінами вогню, яких він знає, що не повинен торкатися. Він може наблизитися до однієї з цих стін, але не повинен її торкатися. Також він не може впасти з краю сітки.
Як швидко LeaperLad може дістатися до свого HeloPak і зупинитися на цьому диску?
Вхідні дані містять одну задачу на кожному рядку вводу. Рядок вводу міститиме послідовність цілих чисел, кожне з яких відокремлене одним пробілом.
Перші два цілі числа будуть і , ширина і висота сітки. Кожне з цих значень буде між і , включно. Після цього буде два цілі числа, що представляють координати диска, на якому прокидається LeaperLad. Після цього буде два цілі числа, що представляють координати диска, на якому знаходиться HeloPak. Наступне число буде , кількість стін вогню. Буде шість або менше стін вогню. Після цього буде наборів з цілих чисел, що представляють дві координати кінцевих точок стін.
Для всіх координат, перше число буде між і w-1, включно, а друге число буде між і h-1, включно. Усі стіни вогню будуть принаймні однієї одиниці довжини. HeloPak і LeaperLad ніколи не починають на одному диску, і жоден з них не починає на диску, що знаходиться на стіні вогню. Завжди буде спосіб для LeaperLad дістатися до свого HeloPak.
Буде не більше 50 задач.
Для кожного рядка вводу, виведіть одне ціле число, що вказує мінімальну кількість ходів, необхідних для того, щоб LeaperLad дістався до свого HeloPak. Зверніть особливу увагу на перші кілька прикладів; вони пояснюють, як рахуються ходи.
Приклади
Приклад 1
2 1 0 0 1 0 0

Це вимагає двох ходів. У першому ході LeaperLad прискорюється на одну одиницю в позитивному напрямку і стрибає на диск призначення. У другому ході він уповільнюється до необхідної швидкості нуль (зверніть увагу, що хоча позиція LeaperLad не змінюється під час другого ходу, це все одно враховується в загальній кількості).
Приклад 2
2 2 0 0 1 1 0

Це вимагає чотирьох ходів. LeaperLad спочатку рухається вправо, як у попередньому прикладі, але він повинен спочатку уповільнитися в напрямку , потім прискоритися в напрямку , щоб стрибнути вниз, потім знову уповільнитися, щоб стати нерухомим.
Приклад 3
4 2 1 0 2 1 2 0 1 1 1 2 0 3 0

Це вимагає восьми ходів. LeaperLad не може стрибнути по діагоналі з місця; йому потрібно відступити, щоб набрати імпульс спочатку. Тому спочатку він повинен переміститися в позицію , потім уповільнитися, щоб розвернутися, потім прискоритися в напрямку , стрибаючи на своє початкове місце. Його імпульс дозволяє йому прискоритися в напрямку , щоб зробити діагональний рух. Після приземлення на місце призначення, у нього є одна одиниця імпульсу в обох напрямках і , тому він повинен уповільнитися, спочатку в напрямку (що переносить його в позицію , перевищуючи місце призначення). Потім він уповільнюється, щоб розвернутися, стрибає на місце призначення ще раз і потім уповільнюється, щоб стати нерухомим, всього вісім ходів.
Приклад 4
9 9 8 3 8 5 4 8 4 5 1 5 1 2 4 2 4 5 7 5 7 8 4

Це вимагає ходів.
Приклад 5
9 9 2 2 7 8 6 0 6 4 3 6 8 3 7 1 7 4 1 3 6 7 0 4 1 1 2 5 7 6 3

Це вимагає ходів.
Приклад 1