AT_bogosortcontest_div1_m I hate prime numbers
Description
> 素数が嫌いな soryuusi 君は、以下の問題を考えました。
正整数 $ N, M $ が与えられます。 長さ $ N $ の正整数列 $ A = (A_1, A_2, \dots, A_N) $ および $ B = (B_1, B_2, \dots, B_N) $ の組 $ (A, B) $ であって、以下の条件を全て満たすものを**良い数列の組**と呼びます。
- $ 1 \leq i \leq N $ を満たす全ての整数 $ i $ について、 $ 1 \leq A_i \leq N $ である。
- $ 1 \leq i \leq N $ を満たす全ての整数 $ i $ について、 $ B_i \leq B_{A_i} $ である。
- 任意の整数の組 $ (a, b) $ に対して、 $ (A_i, B_i) = (a, b) $ となる整数 $ i \ (1 \leq i \leq N) $ の個数は素数ではない。
各 $ m = 1, 2, \ldots, M $ について、良い数列の組 $ (A, B) $ のうち、 $ B $ の要素の最大値が $ m $ であるものの個数を $ 998244353 $ で割った余りを求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $
Output Format
各 $ m = 1, 2, \ldots, M $ に対する答えを以下の形式で出力せよ。
> $ \mathrm{ans}_1 $ $ \mathrm{ans}_2 $ $ \dots $ $ \mathrm{ans}_M $
Explanation/Hint
### Sample Explanation 1
良い数列の組 $ (A, B) $ であって $ B $ の要素の最大値が $ 1 $ となるものは、以下の $ 2 $ 個です。
- $ A = (1, 2), \ B = (1, 1) $
- $ A = (2, 1), \ B = (1, 1) $
良い数列の組 $ (A, B) $ であって $ B $ の要素の最大値が $ 2 $ となるものは、以下の $ 6 $ 個です。
- $ A = (1, 1), \ B = (2, 1) $
- $ A = (1, 2), \ B = (1, 2) $
- $ A = (1, 2), \ B = (2, 1) $
- $ A = (1, 2), \ B = (2, 2) $
- $ A = (2, 1), \ B = (2, 2) $
- $ A = (2, 2), \ B = (1, 2) $
### Constraints
- $ 1 \leq N \leq 5 \times 10^4 $
- $ 1 \leq M \leq 10^5 $
- 入力される数値はすべて整数