Задача №114968. Соберите станок

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

Станок состоит из \(n\) деталей первого типа, пронумерованных от \(1\) до \(n\), и из \(n\) деталей второго типа, пронумерованных от \(1\) до \(n\). Деталь первого типа под номером \(i\) имеет размер \(a_i\), а деталь под номером \(i\) второго типа имеет размер \(b_i\).

Для сборки станка необходимо каждую деталь первого типа соединить с какой-то деталью второго типа, при том разные детали первого типа надо соединить с разными деталями второго типа. Качеством станка считается количество пар соединённых деталей, в которых размер детали первого типа строго больше размера детали второго типа.

Вася даёт вам число \(m\) и просит для каждого числа \(k\) от \(m\) до \(n\) посчитать количество способов собрать станок качества равного \(k\), взятое по модулю \(998244353\). Два способа считаются различными, если есть пара деталей, соединённая в одном из способов, но несоединённая в другом.

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

Первая строка содержит два целых числа \(n\) и \(m\) (\(1 \le n \le 100\,000,\ 0 \le m \le n\)) — количество деталей каждого из типов, а так же данное Васей число.

Вторая строка содержит \(n\) чисел \(a_1, a_2, \ldots, a_n\) (\(1 \le a_i \le 10^9\)) — размеры деталей первого типа.

Третья строка содержит \(n\) чисел \(b_1, b_2, \ldots, b_n\) (\(1 \le b_i \le 10^9\)) — размеры деталей второго типа.

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

Выведите \(n - m + 1\) число. \(i\)-е число должно быть равно количеству способов собрать станок качества \(m + i - 1\), взятое по модулю \(998244353\).

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

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

Доп. ограничения
Группа Баллы \(n\) \(m\) \(a_i\) Необх. группы Комментарий
0 0 Тесты из условия.
1 8 \(n \le 9\) 0
2 11 \(n \le 17\) 0, 1
3 14 \(a_i \le 2\)
4 17 \(m = n\)
5 19 \(m = n-1\)
6 16 \(n \le 300\) 0, 1, 2
7 15 \(n \le 5000\) 0, 1, 2, 6
8 1 0 – 7
Примеры
Входные данные
5 0
2 3 4 5 6
1 2 3 4 5
Выходные данные
0 1 26 66 26 1
Входные данные
4 2
1 2 3 4
4 3 2 1
Выходные данные
11 1 0
Входные данные
2 0
2 2
1 1
Выходные данные
0 0 2
Сдать: для сдачи задач необходимо войти в систему