eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Шестикутні шляхи

Шестикутні шляхи

Пошук найкоротшого маршруту є типовою задачею для водія автомобіля. Якщо автомобіль рухається по найкоротшому шляху, це економить гроші. Крім того, важливо знати альтернативні маршрути тієї ж довжини, у випадку якщо основний маршрут недоступний, наприклад, із-за деяких дорожних робіт. Для опису області необхідно промоделювати її карту. В ACM нещодавно виявили, що трикутні та прямокутні моделі областей є недостатніми, тому вирішили використовувати шестикутники для опису карт. Клітинки правильної шестикутної сітки (наприклад, сот) можна нумерувати, починаючи з \textbf{1} (у довільній клітинці) і рухатись по спіралі до інших клітинок. Таким чином, кожна комірка однозначно ідентифікується своїм номером. І навпаки, кожне додатнє ціле число визначає одну комірку. \includegraphics{https://static.e-olymp.com/content/0e/0e40fe2fd2d13ac05cf7f4fcfc4a4dda00f29b7c.jpg} Дві клітинки називаються сусідніми, якщо вони мають одну спільну сторону. У нескінченній структурі кожна комірка має рівно шіст сусідів. Наприклад, комірка номер \textbf{2} є сусідньою з \textbf{1}, \textbf{3}, \textbf{7}, \textbf{8}, \textbf{9} та \textbf{10}. \textit{Шестикутний шлях} - це непорожня послідовність комірок, у якій кожна з них (крім останньої) є сусідньою до наступної. Шестикутний шлях між двома комірками \textbf{X} та \textbf{Y} - це шлях, у якому \textbf{X} - перша комірка послідовності, а \textbf{Y} - остання. \textit{Довжиною} шляху називається кількість комірок у ньому мінус одна. Довжина шляху являє собою кількість кроків, необхідних для проходження усього маршруту. Вам потрібно знайти довжину найкоротшого маршруту між двома клітинками, а також загальну кількість взаємно різних маршрутів такої ж довжини. Різні маршрути повинні відрізнятись по меншій мірі у одному члені послідовності, тобто вони не повинні бути послідовностями, які повністю не перетинаються. \InputFile Вхідні дані містять декілька тестів, кожен з яких розміщено у окремому рядку. Рядок містить два цілих числа \textbf{X} та \textbf{Y} (\textbf{1} ≤ \textbf{X}, \textbf{Y} ≤ \textbf{1000000}, \textbf{X} ≠ \textbf{Y}), відокремлених пропуском. Числа задають дві різні комірки. За останнім тестом йде рядок з двох нулів, яка позначає кінець вхідних даних. \OutputFile Для кожного тесту виведіть речення "\textbf{There are N routes of the shortest length L.}". Замініть \textbf{L} найменшою довжиною шляху між комірками \textbf{X} та \textbf{Y}. Замініть \textbf{N} кількістю різних шляхів тієї ж самої довжини. Якщо існує лише один шлях, то використовуйте слова "\textbf{is}" та "\textbf{route}" замість "\textbf{are}" та "\textbf{routes}".
Ліміт часу 2 секунди
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
1 2
0 0
Вихідні дані #1
There is 1 route of the shortest length 1.
Джерело Czech Technical University Open 2003