#L3397. 「2020-2021 集训队作业」春天,在积雪下结一成形,抽枝发芽

「2020-2021 集训队作业」春天,在积雪下结一成形,抽枝发芽

题目描述

一个长度为 ( n ) 的排列是正确的,当且仅当它不存在非平凡(长度不为 ( 1 ) 或 ( n ))的连续子序列,使得它的值也是连续的。例如 ([2,4,1,3]) 是正确的,但 ([1,3,2]) 是不正确的(因为 ([3,2]) 是一个非平凡子序列且值连续),([7,1,6,4,5,3,2]) 也是不正确的(因为 ([6,4,5,3])、([6,4,5,3,2])、([1,6,4,5,3,2]) 都是非平凡且值连续的子序列)。

请分别计算长度为 ( 1 \sim n ) 的正确排列的数目,结果对 ( 998244353 ) 取模。

输入格式

输入文件仅一行,包含两个整数 ( \text{type} ) 和 ( n ),分别表示数据类型和排列最大长度。

输出格式

  • 对于 ( \text{type}=0 ) 的数据,输出一行一个非负整数,表示长度为 ( n ) 的正确排列个数 ( \bmod 998244353 ) 的值。
  • 对于 ( \text{type}=1 ) 的数据,输出 ( n ) 行,第 ( i ) 行包含一个非负整数,表示长度为 ( i ) 的正确排列个数 ( \bmod 998244353 ) 的值。

样例 1

  • 输入:
    0 4
    
  • 输出:
    2
    

说明:正确的排列有 ([2,4,1,3])、([3,1,4,2])。

样例 2

  • 输入:
    1 4
    
  • 输出:
    1
    2
    0
    2
    

数据范围与提示

本题采用捆绑测试:

  • 子任务 1:( n \le 8 ),( \text{type} \in {0,1} )
  • 子任务 2:( n \le 1000 ),( \text{type} \in {0,1} )
  • 子任务 3:( n \le 10^5 ),( \text{type}=0 )
  • 子任务 4:( n \le 10^5 ),( \text{type} \in {0,1} )