Ваші Шляхи#5701

Ваші Шляхи

1 секунда
256 мегабайтів
Дуже складна

Ви живете в невеликому, добре спланованому прямокутному місті на Пхукеті. Розмір центральної частини міста становить кілометрів кілометрів. Центральна частина поділена на одиничних блоків, кожен розміром 1 \times 1 км². Є H+1 вулиць, що йдуть із заходу на схід, і W+1 проспектів, що йдуть з півночі на південь. Центральну частину можна уявити як прямокутник на площині, як показано нижче.

Рисунок 1. Центральна частина міста, де H = 3, а W = 6.

Ми можемо ідентифікувати кожне перехрестя за його координатами на площині. Наприклад, на рисунку вище лівий нижній кут — це перехрестя , а правий верхній кут — це перехрестя .

Ваш дім знаходиться в лівому нижньому куті (тобто, перехрестя ) і ви хочете дістатися до університету у правому верхньому куті (тобто, перехрестя (W, H)). Більше того, ви хочете дістатися до університету без зайвих зусиль; тому ви хочете йти тільки з заходу на схід і з півдня на північ. Таким чином, у прикладі вище є способи дістатися до університету.

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

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

Вхідні дані

Перший рядок містить ціле число , кількість тестових випадків (1 \leq T \leq 5). Кожен тестовий випадок має наступний формат.

Перший рядок кожного тестового випадку містить цілі числа: , та (1 \leq W \leq 1000, 1 \leq H \leq 1000, 1 \leq K \leq 10000). і визначають розмір центральної частини. позначає кількість днів, коли ви хочете дістатися до університету.

Наступні рядків описують інформацію про заблоковані частини вулиць і проспектів. Більш конкретно, рядок 1+i, для 1 \leq i \leq K, починається з цілого числа Q_i (1 \leq Q_i \leq 100), що позначає кількість частин, які заблоковані. Потім слідують Q_i наборів з цілих чисел, що описують заблоковані частини. Кожна частина описується цілими числами, , , і (0 \leq A \leq C \leq W, 0 \leq B \leq D \leq H), що означає, що частини, що з'єднують перехрестя і (C, D), заблоковані. Гарантується, що ця частина є дійсною частиною вулиць або проспектів, також C-A \leq 1, і D-B \leq 1, тобто частина має довжину км.

Вихідні дані

Для кожного тестового випадку, для кожного дня, ваша програма повинна вивести кількість способів дістатися до університету за модулем в окремому рядку. Тобто, вихідні дані для кожного тестового випадку повинні містити рядків.

Приклади

Приклад 1

Loading
Loading