Глибина дерева#10295

Глибина дерева

1 секунда
128 мегабайтів
Дуже легка

На Новий рік фермер Джон вирішив подарувати своїм коровам святкове бінарне дерево пошуку (БДП)!

Щоб створити БДП, фермер Джон починає з перестановки a = \{a_1, a_2, \ldots, a_n\} чисел від до , де n \le 300. Потім він виконує наступний псевдокод з аргументами і .

generate(l, r):
  if l > r, return пусте піддерево;
  x = argmin_{l <= i <= r} a_i; // індекс min a_i in {a_l, ..., a_r}
  return БДП з x у корені, 
    generate(l, x-1) як ліве піддерево,
    generate(x+1, r) як праве піддерево;

Наприклад, перестановка \{3, 2, 5, 1, 4\} генерує наступне БДП:

    4
   / \
  2   5
 / \ 
1   3

Нехай d_i(a) позначає глибину вузла в дереві, що відповідає , тобто кількість вузлів на шляху від a_i до кореня. У наведеному вище прикладі d_4(a) = 1, d_2(a) = d_5(a) = 2, і d_1(a) = d_3(a) = 3.

Кількість інверсій дорівнює кількості пар цілих чисел таких, що 1 \le i < j \le n і a_i > a_j. Корови знають, що , яке фермер Джон буде використовувати для генерації БДП, має рівно інверсій (0 \le k \le n \cdot (n - 1) / 2). Для всіх , що задовольняють цій умові, обчислити залишок від ділення \sum_a d_i(a) на для кожного 1 \le i \le n.

Вхідні дані

Єдиний рядок містить три цілі числа , і . є простим числом у діапазоні [10^8, 10^9 + 9].

Вихідні дані

Виведіть цілих чисел, рівних \sum_a d_i(a) \pmod{m} для кожного 1 \le i \le n.

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Примітка

Приклад 1: єдиною перестановкою буде a = \{1, 2, 3\}.

Приклад 2: існують дві перестановки a = \{1, 3, 2\} і a = \{2, 1, 3\}.