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

Врятувати котеня

Врятувати котеня

Артур приймає участь у телешоу, у якому участникам необхідно виконувати різні інтелектуальні та фізичні завдання, щоб заробляти бали. У одному з таких завдань Артуру необхідно врятувати маленьке котеня. Поле для виконання завдання являє собою прямокутник розміром \textbf{n}×\textbf{m} метрів, розбитий на квадрати одиничної площі. У одному з квадратів спочатку знаходиться Артур, у деякому іншому квадраті знаходиться котеня. Крім того, один з квадратів містить ліфт, ставши на який разом з котеням, Артур успішно виконує завдання. За один крок Артур може переміщуватись на довільний квадрат, який має спільну сторону з тим, на якому він стоїть. Після цього квадрат, на якому перед цим кроком стояв Артур, щезає і більше на нього ставати неможна. Таким чином щезають у тому числі і квадрат, на якому спочатку стояв Артур, і квадрат з котеням. Завдання Артура --- дійти до котеняти, взяти його і потім дійти до ліфту. При цьому бали за виконання завдання, залежать від числа кроків, які зробить Артур, тому йому необхідно зробити мінімальне число кроків. З'ясувавши, скілько кроків йому прийдеться зробити, Артур зацікавився, скільки існує різних способів дійти до котеняти, а потім з ним до ліфту, зробивши у сумі мінімальне число кроків. Допоможіть йому це вияснити. Це число може бути досить великим, тому Артур просить знайти його по модулю \textbf{10^9+7}. \InputFile Перший рядок вхідного файлу містить два натуральних числа \textbf{n} і \textbf{m} --- розміри поля для виконання завдання (\textbf{2} ≤ \textbf{n}, \textbf{m} ≤ \textbf{100}). Другий рядок містить два цілих числа \textbf{x_A} та \textbf{y_A} --- координати квадрата, на якому спочатку знаходиться Артур (\textbf{1} ≤ \textbf{x_A} ≤ \textbf{n}, \textbf{1} ≤ \textbf{y_A} ≤ \textbf{m}). Третій рядок містить два цілих числа \textbf{x_K} та \textbf{y_K} --- координати квадрата, на якому сидить котеня (\textbf{1} ≤ \textbf{x_K} ≤ \textbf{n}, \textbf{1} ≤ \textbf{y_K} ≤ \textbf{m}). Четвертий рядок містить два цілих числа \textbf{x_E} та \textbf{y_E} --- координати квадрату, на якому знаходиться ліфт (\textbf{1} ≤ \textbf{x_E} ≤ \textbf{n}, \textbf{1} ≤ \textbf{y_E} ≤ \textbf{m}). Ці три квадрати попарно різні. \OutputFile У єдиному рядку вихідного файлу виведіть одне число --- кількість способів дійти до котеняти і потім до ліфту, не наступаючи на один квадрат двічі, зробивши при цьому мінімальну кількість кроків. Число необхідно вивести по модулю \textbf{10^9+7}. \textbf{Примітка до прикладу} \includegraphics{https://static.e-olymp.com/content/91/9182e38b7fdc3067d0b652083c79a68972b38324.jpg} Два способи для поля, наведеного у прикладі.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
3 3
1 1
3 3
2 2
Вихідні дані #1
2
Джерело XIII Всеросійська командна олімпіада школярів з програмування