Розрізання прямокутника#557

Розрізання прямокутника

1 секунда
64 мегабайти
Дуже легка

На координатній площині задано прямокутник з висотою та шириною . Усередині цього прямокутника розміщено відрізки, паралельні до координатних осей, з цілими координатами кінців.

Планується розрізати прямокутник на кілька частин горизонтальними та вертикальними розрізами. На кожному кроці ви можете розділити будь-який існуючий прямокутник на дві непорожні прямокутні частини горизонтальним або вертикальним розрізом. Заборонено робити розріз, який перетинає будь-який з даних відрізків усередині прямокутника.

Напишіть програму, яка визначить кількість способів розрізати заданий прямокутник на частин за допомогою горизонтальних та вертикальних розрізів. Способи, що відрізняються порядком розрізів, вважаються різними.

Вхідні дані

У першому рядку задано два цілих числа і (1 \le h, w \le 8) — висота і ширина прямокутника.

У другому рядку задано одне ціле число (1 \le k \le hw) — кількість частин, на які треба розділити прямокутник.

У третьому рядку задано одне ціле число (0 \le \text{cnt} \le 10) — кількість відрізків усередині прямокутника.

Кожен з наступних рядків містить по чотири цілих числа x_1, y_1, x_2, y_2 (0 \le x_1 \le x_2 \le w, 0 \le y_1 \le y_2 \le h) — координати кінців відрізка.

Вихідні дані

Виведіть кількість способів розділити даний прямокутник. Відповідь виведіть за модулем 2^{30}.

Приклади

Приклад 1

Loading
Loading