Крипто#8562

Крипто

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

Пешо шифрує перестановку з чисел, де кожне число від до зустрічається рівно один раз. Він використовує такий алгоритм:

  1. Замінити всі числа в перестановці, де число замінюється на -е просте число.

  2. Вибрати випадкове додатне , що не перевищує .

  3. Розглянути всі відрізки, що складаються з підряд ідучих елементів отриманої послідовності, які містять хоча б елементів. Для кожного з них записати добуток мінімальних чисел.

  4. Нехай дорівнює кількості різних добутків, отриманих на попередньому кроці.

  5. Шифром перестановки буде трійка " ".

Наприклад, розглянемо, як Пешо зашифрує перестановку {, , , }:

. Перші простих числа це , , і . Тому він замінює в перестановці

Пешо отримує послідовність , , , .

. Тепер він вибирає випадкове число . Нехай = .

. Всі відрізки отриманої послідовності:{}, {}, {}, {}, {, }, {, }, {, }, {, , }, {, , }, {, , , }

З них він залишає тільки ті, які містять хоча б = елементи, і для кожного з них обчислює добуток двох мінімальних елементів:

Отримуються наступні добутки {, , , , , }

. Всього в наборі чотири різних добутки: {, , , }, таким чином = .

. Шифр початкової перестановки " ".

Пешо швидко зрозумів, що алгоритм шифрує послідовності краще, ніж він очікував. Він хотів, щоб код був взаємно-однозначним, але виявилося, що не завжди можна розшифрувати отриманий шифр.

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

Вхідні дані

Один рядок містить три цілих числа , (1 \leq k \leq n \leq 400) і (1 \leq p \leq 10^9).

Вихідні дані

Виведіть кількість перестановок з шифром " ". Відповідь вивести за модулем .

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Примітка

У першому прикладі перестановки {, , } і {, , } можуть бути зашифровані як " ".

У другому прикладі підходять перестановки {, , , }, {, , , }, {, , , }, {, , , }, {, , , }, {, , , }, {, , , }, {, , , }, {, , , }, {, , , }, {, , , }, {, , , }.