Изменения рейтингов за последние раунды временно удалены. Скоро они будут возвращены. ×

G. Допинг
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Мы называем массив $$$a$$$ длины $$$n$$$ изысканным, если для каждого $$$1 < i \le n$$$ верно, что $$$a_i = a_{i-1} + 1$$$.

Назовем $$$f(p)$$$, применяемую к перестановке$$$^\dagger$$$ длины $$$n$$$, как минимальное количество подмассивов, на которые можно разбить перестановку так, чтобы каждый из них был изысканным. Например, $$$f([1,2,3]) = 1$$$, а $$$f([3,1,2]) = 2$$$ и $$$f([3,2,1]) = 3$$$.

Учитывая $$$n$$$ и перестановку $$$p$$$ длины $$$n$$$, мы определяем перестановку $$$p'$$$ длины $$$n$$$ как $$$k$$$-специальную тогда и только тогда, когда:

  • $$$p'$$$ лексикографически меньше$$$^\ddagger$$$, чем $$$p$$$, и
  • $$$f(p') = k$$$.

Ваша задача — посчитать для каждого $$$1 \le k \le n$$$ количество $$$k$$$-специальных перестановок по модулю $$$m$$$.

$$$^\dagger$$$ Перестановка — это массив, состоящий из $$$n$$$ различных целых чисел от $$$1$$$ до $$$n$$$ в произвольном порядке. Например, $$$[2,3,1,5,4]$$$ — это перестановка, но $$$[1,2,2]$$$ — не перестановка ($$$2$$$ встречается в массиве дважды) и $$$[1,3,4]$$$ тоже не перестановка ($$$n=3$$$, но в массиве есть $$$4$$$).

$$$^\ddagger$$$ Перестановка $$$a$$$ длины $$$n$$$ лексикографически меньше перестановки $$$b$$$ длины $$$n$$$ тогда и только тогда, когда выполняется следующее: в первой позиции, где $$$a$$$ и $$$b$$$ различаются, перестановка $$$a$$$ имеет меньший элемент, чем соответствующий элемент в $$$b$$$.

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

Первая строка содержит два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n \le 2000$$$, $$$10 \le m \le 10^9$$$) — длина перестановки и требуемый модуль.

Вторая строка содержит $$$n$$$ различных целых чисел $$$p_1, p_2, \ldots, p_n$$$ ($$$1 \le p_i \le n$$$) — перестановка $$$p$$$.

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

Выведите $$$n$$$ целых чисел, где $$$k$$$-е число — это количество $$$k$$$-специальных перестановок по модулю $$$m$$$.

Примеры
Входные данные
4 666012
1 3 4 2
Выходные данные
1 0 1 1 
Входные данные
3 10
3 2 1
Выходные данные
1 2 2 
Входные данные
7 1000000000
7 2 1 3 5 4 6
Выходные данные
1 6 40 201 705 1635 1854 
Входные данные
10 11
10 9 8 7 6 5 4 3 2 1
Выходные данные
1 9 9 0 1 5 5 0 1 0 
Примечание

В первом примере перестановки, лексикографически меньшие, чем $$$[1,3,4,2]$$$, следующие:

  • $$$[1,2,3,4]$$$, $$$f([1,2,3,4])=1$$$;
  • $$$[1,2,4,3]$$$, $$$f([1,2,4,3])=3$$$;
  • $$$[1,3,2,4]$$$, $$$f([1,3,2,4])=4$$$.

Таким образом, наш ответ $$$[1,0,1,1]$$$.

Во втором примере перестановки, лексикографически меньшие, чем $$$[3,2,1]$$$, следующие:

  • $$$[1,2,3]$$$, $$$f([1,2,3])=1$$$;
  • $$$[1,3,2]$$$, $$$f([1,3,2])=3$$$;
  • $$$[2,1,3]$$$, $$$f([2,1,3])=3$$$;
  • $$$[2,3,1]$$$, $$$f([2,3,1])=2$$$;
  • $$$[3,1,2]$$$, $$$f([3,1,2])=2$$$.

Таким образом, наш ответ равен $$$[1,2,2]$$$.