Вы только что узнали алгоритм сортировки пузырьком, который способен сортировать массив в неубывающем порядке. Определим функцию $$$\text{sort}(a)$$$ следующим образом в псевдокоде:
function sort(array a):
rounds := 0 // создаём счётчик раундов
n := length of a
while a is not non-decreasing: // пока массив a не является неубывающим
rounds := rounds + 1
for i from 1 to n - 1:
if a[i] > a[i + 1]:
swap(a[i], a[i + 1])
return rounds
Возвращаемое значение $$$\text{sort}(a)$$$ представляет собой количество раундов, необходимых для сортировки массива $$$a$$$ в неубывающем порядке с использованием сортировки пузырьком.
Вам дано целое число $$$n$$$, а также $$$m$$$ кортежей целых чисел $$$(k_i,l_i,r_i)$$$ ($$$1\le i\le m$$$). Подсчитайте количество перестановок$$$^{\text{∗}}$$$ $$$p$$$ длины $$$n$$$, по модулю $$$998\,244\,353$$$, для которых выполняются следующие ограничения:
$$$^{\text{∗}}$$$Перестановкой длины $$$n$$$ является массив, состоящий из $$$n$$$ различных целых чисел от $$$1$$$ до $$$n$$$ в произвольном порядке. Например, $$$[2,3,1,5,4]$$$ — перестановка, но $$$[1,2,2]$$$ не перестановка ($$$2$$$ встречается в массиве дважды) и $$$[1,3,4]$$$ тоже не перестановка ($$$n=3$$$, но в массиве встречается $$$4$$$).
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит два целых числа $$$n$$$ и $$$m$$$ ($$$2\leq n\leq 10^6$$$, $$$0\leq m\leq 1000$$$).
Затем следуют $$$m$$$ строк, $$$i$$$-я строка содержит три целых числа $$$k_i$$$, $$$l_i$$$ и $$$r_i$$$ ($$$0\le k_i\le n - 1$$$, $$$1\le l_i\le r_i\le n$$$) — ограничения.
Гарантируется, что сумма значений $$$m^2$$$ по всем наборам входных данных не превосходит $$$10^6$$$.
Для каждого набора входных данных выведите одно целое число — количество возможных перестановок, по модулю $$$998\,244\,353$$$.
64 30 1 11 3 32 4 43 20 3 31 2 34 31 2 22 3 40 1 25 31 1 43 5 54 5 510 51 2 32 3 43 4 54 5 65 6 71000000 0
21880192600373341033
В первом наборе входных данных только перестановки $$$[3,1,4,2]$$$ и $$$[4,1,3,2]$$$ удовлетворяют условиям. Возьмём $$$[3,1,4,2]$$$ в качестве примера. Давайте вычислим массив $$$b$$$:
Таким образом, $$$b=[0,1,1,2]$$$. Легко показать, что он удовлетворяет всем ограничениям.
Во втором наборе входных данных только перестановка $$$[1,2,3]$$$ удовлетворяет ограничениям.
В третьем наборе входных данных следующие $$$8$$$ перестановок удовлетворяют ограничениям: