Олимпиадный тренинг

Задача . D. Радужные прямоугольники


Shrimpy Duc это пухлый и жадный мальчик, который всегда голоден. После бесчисленных попыток найти еду, чтобы утолить его нескончаемый голод, Shrimpy Duc нашел конфеты M&M, лежащие на поле \(L \times L\). Есть \(n\) конфеток M&M на этом поле, \(i\)-я из них находится в точке \((x_i + 0.5, y_i + 0.5),\) и имеет цвет \(c_i\), один из возможных \(k\) цветов (размерами M&Ms можно пренебречь).

Shrimpy Duc хочет украсть прямоугольник M&Ms, а именно, он хочет выбрать прямоугольник с целочисленными координатами внутри поля, и украсть все M&Ms в нем. Ему необязательно красть все конфеты, однако, он хочет украсть хотя бы одну конфету каждого цвета.

Иначе говоря, он хочет посчитать количество таких прямоугольников, в которых левая нижняя вершина находится в \((X_1, Y_1)\), правая верхняя в \((X_2, Y_2)\), они являются точками с целочисленными координатами, удовлетворяющие условиям \(0 \le X_1 < X_2 \le L\) и \(0 \le Y_1 < Y_2 \le L\), что для каждого \(1 \le c \le k\) существует хотя бы одна M&M с цветом \(c\), которая лежит в этом прямоугольнике.

Сколько существует таких прямоугольников? Это число может быть большим, так что вам достаточно найти его по модулю \(10^9 + 7\).

Входные данные

В первой строке записаны три целых числа \(n, k, L\) \((1 \leq k \leq n \leq 2 \cdot 10^3, 1 \leq L \leq 10^9 )\) — количество M&Ms, количество цветов, и размер поля, соответственно.

Каждая из следующих \(n\) строк описывает M&Ms. В каждой строке записано три целых числа \(x_i, y_i, c_i\) \((0 \leq x_i, y_i < L, 1 \le c_i \le k)\) — координаты и цвет \(i\)-й M&M, соответственно.

Разные M&Ms имеют разные координаты (\(x_i \ne x_j\) или \(y_i \ne y_j\) для всех \(i \ne j\)), и для каждого \(1 \le c \le k\) есть хотя бы одна M&M с цветом \(c\).

Выходные данные

Выведите одно целое число — количество прямоугольников, удовлетворяющих условиям Shrimpy Duc, по модулю \(10^9 + 7\).

Примечание

Поле для первого примера:


Примеры
Входные данныеВыходные данные
1 4 2 4
3 2 2
3 1 1
1 1 1
1 2 1
20
2 5 3 10
6 5 3
5 3 1
7 9 1
2 3 2
5 0 2
300
3 10 4 10
5 4 4
0 0 3
6 0 1
3 9 2
8 7 1
8 1 3
2 1 3
6 3 2
3 5 3
4 3 4
226

time 4000 ms
memory 512 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя