Зростаючі підпослідовності#6857

Зростаючі підпослідовності

4 секунди
64 мегабайти
Дуже складна

Послідовність , , …, , що складається з чисел , , … , , називається перестановкою, якщо всі елементи в послідовності різні.

Перестановка містить зростаючу підпослідовність з елементів, якщо існують індекси

1 \leq i_1 < i_2 < \ldots < i_k \leq N,

такі, що

p(i_1) < p(i_2) < \ldots < p(i_k).

Якщо перестановка має зростаючу підпослідовність з елементів, але не має жодної з B+1 елементів, то число називається ступенем зростання цієї перестановки.

Вам потрібно створити програму, яка, отримавши число , обчислює кількість перестановок, ступінь зростання яких дорівнює . Оскільки кількість таких перестановок може бути дуже великою, необхідно обчислити її залишок від ділення на .

Вхідні дані

Вхідний файл складається з одного рядка, що містить два цілі числа та (1 \leq N \leq 40, 1 \leq B \leq 5), розділені одним або кількома пробілами.

Вихідні дані

Вихідний файл повинен містити одне ціле число, яке є залишком від ділення на кількості перестановок, ступінь зростання яких дорівнює .

Приклади

Приклад 1

Loading
Loading