На координатній площині задано прямокутник з висотою та шириною . Усередині цього прямокутника розміщено відрізки, паралельні до координатних осей, з цілими координатами кінців.
Планується розрізати прямокутник на кілька частин горизонтальними та вертикальними розрізами. На кожному кроці ви можете розділити будь-який існуючий прямокутник на дві непорожні прямокутні частини горизонтальним або вертикальним розрізом. Заборонено робити розріз, який перетинає будь-який з даних відрізків усередині прямокутника.
Напишіть програму, яка визначить кількість способів розрізати заданий прямокутник на частин за допомогою горизонтальних та вертикальних розрізів. Способи, що відрізняються порядком розрізів, вважаються різними.
У першому рядку задано два цілих числа і (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