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

Лунокод 2

Лунокод 2

Мало хто пам'яиає, що спосіб кодування інформації, відомий тепер як лунокод, було винайдено ще у ході місячно-марсіанської війни. З незначними модифікаціями він і зараз використовується лунатиками для передачі даних. Інформація, що передається, у вигляді набору нулів та одиниць записується у матрицю розміром \textbf{M}×\textbf{N}. На матрицю накладено наступне обмеження (контрольна умова): у неї повинно бути рівно \textbf{K} нульових рядків і рівно \textbf{L} нульових стовбців. Якщо після прийому виявляється, що отримана матриця не задовольняє контрольній умові, значить, деяка кількість її комірок була спотворена при передачі. У ході звіту перед президентом Лунної Федерації міністр зв'язку запропоеував провести реформу лунокода. Міністр аргументував це тим, що кількість різних повідомлень, які можуть бути передані, не так вже й велика. Президент доручив міністерству спільно з Лунною Академією Наук дослідити дане питання, щоб вирішити, чи дійсно необхідна реформа. У ході дослідження виявилось, що міністр помилявся: адже при достатньо великих \textbf{M} та \textbf{N} кількість матриць з нулів та одиниць розміром \textbf{M}×\textbf{N}, які задовольняють контрольній умові, величезна. Чи зможете ви визначити, скільки їх? \InputFile У єдиному рядку через пропуск записаноы \textbf{4} цілих числа: \textbf{M}, \textbf{N}, \textbf{K}, \textbf{L} (\textbf{1} ≤ \textbf{M}, \textbf{N} ≤ \textbf{100000}, \textbf{0} ≤ \textbf{K} ≤ \textbf{M}, \textbf{0} ≤ \textbf{L} ≤ \textbf{N}). \OutputFile Як було вже сказано, кількість шуканих матриць може бути дуже великою, тому немає потреби виводити її повністю. Виведіть залишок від ділення цього числа на \textbf{10^9+7}.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
2 2 0 0
Вихідні дані #1
7
Автор Ігор Чевдарь
Джерело Ural SU Contest. Petrozavodsk Summer Session, August 2008