D. Великое Ангусение
ограничение по времени на тест
1.5 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Во времена Великого Ангуса, когда в королевстве «Бургер Кинг» ещё только складывались древние рецепты, каждый элемент массива считался отдельным ингредиентом для священного бургера. Число $$$a_i$$$ означало, какой именно ингредиент лежит на $$$i$$$-й полке королевской кладовой, всего полок было $$$n$$$.

Но в день Великого Ангусения жрецам было поручено необычное дело. Из отрезка кладовой с $$$l$$$-й по $$$r$$$-ю полку нужно было собрать ровно $$$k$$$ корзин ингредиентов, причём:

  • ингредиент с $$$i$$$-й полки должен оказаться не более чем в одной корзине;
  • в каждой корзине $$$\operatorname{MEX}$$$ набора ингредиентов должен быть равен $$$x$$$.

Здесь $$$\operatorname{MEX}$$$ — это наименьшее неотрицательное число, которого нет в выбранной корзине: именно оно считалось номером недостающего ингредиента в великом рецепте Ангуса.

Жрецы «Бургер Кинга» верили: если на отрезке кладовой посчитать количество способов собрать таким образом корзины, то в этот день Ангус будет особенно сочным, а королевство — сытым и довольным.

Так и поступают мудрецы: для каждого запроса с границами отрезка $$$[l, r]$$$ и числом $$$x$$$ они считают, сколькими способами можно выбрать множество из $$$k$$$ попарно непересекающихся подпоследовательностей $$$a_l, a_{l+1}, \ldots, a_r$$$ так, чтобы каждая подпоследовательность имела $$$\operatorname{MEX}$$$ равный $$$x$$$.

Обратите внимание, что две подпоследовательности считаются различными, если они состоят из элементов с различными индексами в массиве $$$a$$$. Например, в массиве $$$a = [0, 0, 0]$$$ на отрезке $$$[1,3]$$$ существует $$$7$$$ непустых подпоследовательностей с $$$\operatorname{MEX}$$$ равным $$$1$$$.

Вам предстоит выступить в роли мудреца и посчитать количество таких способов. Так как их может быть очень много, достаточно вывести ответы по модулю $$$10^9 + 7$$$.

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

В первой строке заданы три целых числа $$$n$$$, $$$q$$$ и $$$k$$$ ($$$1 \le n, q \le 100\,000$$$, $$$1 \le k \le \min{(n, 1000)}$$$) — количество полок, количество запросов и количество корзин соответственно.

Во второй строке заданы $$$n$$$ целых чисел $$$a_i$$$ ($$$0 \le a_i \le n$$$) — ингредиенты на полках.

Каждая из следующих $$$q$$$ строк содержит описание одного запроса. В ней заданы три целых числа $$$l_i$$$, $$$r_i$$$ и $$$x_i$$$ ($$$1 \le l_i \le r_i \le n$$$, $$$1 \le x_i \le n$$$) — границы отрезка и требуемое значение $$$\operatorname{MEX}$$$ соответственно.

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

Выведите $$$q$$$ строк, в каждой из которых должно находиться одно число — ответ на соответствующий запрос по модулю $$$10^9 + 7$$$.

Система оценки

Тесты к этой задаче состоят из восьми групп. Баллы за каждую группу ставятся только при прохождении всех тестов группы и всех тестов некоторых из предыдущих групп. Обратите внимание, что прохождение тестов из условия не требуется для некоторых групп. Итоговый балл за каждую группу равняется максимальному баллу, полученному за эту группу тестов по всем отправленным посылкам.

ПодзадачаБаллы$$$n$$$ДополнительноНеобх. подзадачи
17$$$n \le 8$$$—У
24—$$$k = n$$$—
312—$$$a_i = 0$$$—
413$$$n \le 3\,000$$$$$$k = 1$$$—
514$$$n \le 3\,000$$$—У, 1, 4
616—$$$k = 1$$$4
713—$$$l_i = 1$$$, $$$r_i = n$$$—
821——У, 1–7
Примеры
Входные данные
3 2 2
0 1 0
1 3 1
2 3 2
Выходные данные
1
0
Входные данные
6 3 1
0 1 2 3 4 5
3 6 1
1 4 2
1 6 6
Выходные данные
0
2
1
Входные данные
8 8 2
0 1 2 0 0 1 2 1
1 6 1
4 5 1
4 4 1
2 5 2
1 8 3
1 8 2
1 8 1
4 7 2
Выходные данные
18
1
0
0
144
72
54
0