#L3395. 「2020-2021 集训队作业」Yet Another Permutation Problem

「2020-2021 集训队作业」Yet Another Permutation Problem

题目描述

给定一个长度为 nn 的排列 [1,2,,n][1,2,\ldots,n],你可以进行以下操作:

选择一个数,将其取出然后放到排列的开头或末尾。

对每个 k=0,1,,n1k=0,1,\ldots,n-1,求出进行至多 kk 次操作可能得到的排列个数。由于这些数可能非常大,你只需要回答它们除以 mm 的余数即可。

输入格式

一行两个整数 n,mn,m1n10001\le n\le 1000108m109+910^8\le m\le 10^9+9mm 是素数)。

输出格式

nn 行,第 ii 行一个整数表示 k=i1k=i-1 时的答案。

样例 1

  • 输入: 33 998244353998244353
  • 输出: 11 55 66

说明:n=3n=3 时,进行至多 11 次操作可以得到除 [3,2,1][3,2,1] 外的所有排列。

样例 2

  • 输入: 11 100000007100000007
  • 输出: 11

样例 3

  • 输入: 2020 10000000091000000009
  • 输出: 11 3939 11001100 2622026220 554040554040 1058148010581480 184187520184187520 930255982930255982 586386822586386822 781249333781249333 374807160374807160 139825602139825602 462558935462558935 6787694267876942 578348054578348054 201415654201415654 108018732108018732 350356788350356788 280522125280522125 280522126280522126

数据范围与提示

  • Subtask #1 (10 points): n10n\le 10
  • Subtask #2 (10 points): n18n\le 18
  • Subtask #3 (10 points): n50n\le 50
  • Subtask #4 (30 points): n300n\le 300
  • Subtask #5 (40 points): 无额外限制。