Боулдерінг — це різновид спортивного скелелазіння. Боулдерінгісти піднімаються по скелях голими руками без страхувальних мотузок. Твій друг подумав, що це буде цікаво й захопливо, тому вирішив відвідати зал для боулдерінгу. Оскільки твій друг ніколи раніше не займався боулдерінгом, він обрав трасу для початківців. Однак на цій трасі він помітив, що деякі пари каменів розташовані надто далеко один від одного, через що дістатися до всіх каменів безпечно дуже складно. Він поступово починає хвилюватися й замислився, чи справді траса підходить для початківців. Тож він попросив тебе написати програму, яка змоделює його лазіння та перевірить, чи зможе він успішно дістатися "цільового" каменя.
Для зручності припустимо, що боулдерінгіст складається з відрізків, які зображають його тулуб, праву руку, ліву руку, праву ногу та ліву ногу.
Один кінець тулуба з'єднаний із руками в їхніх кінцевих точках. Інший кінець тулуба з'єднаний із ногами в їхніх кінцевих точках. Максимальна довжина тулуба, рук і ніг становить , та відповідно. Він піднімається по стіні, змінюючи довжину частин тіла від до їхньої максимальної довжини й обертаючи їх під будь-яким кутом ( градусів). Дивись рисунок нижче, де наведено можливі позиції тіла.

Рис. 1: Приклад можливих положень тіла.
відрізків, які зображають тулуб, руки й ноги. Довжини тулуба, рук та ніг дорівнюють , та відповідно. На рисунку голова позначена як зафарбоване коло для зручності сприйняття, проте це не має значення для цієї задачі.
Боулдерінгіст піднімається по стіні, вхопившись мінімум за три різні камені руками й ногами. У початковому стані він тримається чотирма кінцівками за різні камені. Далі він змінює одну з точок опори, переставляючи руку чи ногу на інший камінь. Це рахується як один рух. Його ціль — дістатися до так званого "цільового каменя" однією з кінцівок. Камені вважаються точками з незначними розмірами. Тобі потрібно написати програму, яка обчислить мінімальну кількість рухів, необхідних, щоб дістатися до цільового каменя.
Вхідні дані мають вигляд наступних рядків:
x_1\ y_1
x_2\ y_2
x_n\ y_n
Перший рядок містить (5 \leq n \leq 30) — кількість каменів.
Другий рядок містить три цілі числа , , (1 \leq A, B, C \leq 50) — довжину тулуба, рук та ніг відповідно.
Останні рядків задають розташування каменів. У -му рядку два цілих числа x_i та y_i (0 \leq x_i, y_i \leq 100) — координати -го каменя.
У початковому стані боулдерінгіст тримається правою рукою за -й камінь, лівою — за -й, правою ногою — за -й, лівою — за -й камінь.
Можна вважати, що перші камені розташовані достатньо близько, щоб він міг триматися за них описаним чином.
Останній камінь — цільовий.
Твоя програма має вивести мінімальну кількість рухів, необхідних, щоб досягти цільового каменя.
Якщо дістатися до цільового каменя неможливо, виведи -1.
Можна вважати, що якщо , , будуть змінені менш ніж на , відповідь не зміниться.
Нижче наведено ілюстрації прикладів того, як боулдерінгіст піднімається до цілі мінімальною кількістю рухів. Зверни увагу, що цього можна досягти різними шляхами, зокрема, змінюючи довжини частин тіла, обертаючи їх тощо.

Рис. 2: Приклад мінімальної кількості рухів для першого прикладу.

Рис. 3: Приклад мінімальної кількості рухів для другого прикладу.
Приклад 1