atcoder#AGC036C. [AGC036C] GP 2

[AGC036C] GP 2

配点 : 900900

問題文

長さ NN の数列 x=(x0,x1,,xN1)x=(x_0,x_1,\cdots,x_{N-1}) があります。 最初、すべての ii (0iN10 \leq i \leq N-1) について xi=0x_i=0 です。

すぬけさんは、次の操作をちょうど MM 回行います。

  • 相異なる添字 i,ji,j (0i,jN1, ij0 \leq i,j \leq N-1,\ i \neq j) を選ぶ。 そして、xix_ixi+2x_i+2 で置き換える。また、xjx_jxj+1x_j+1 で置き換える。

最終的な数列 xx の状態としてありうるものが何通りあるかを求めてください。 ただし、答えは非常に大きくなることがあるので、998244353998244353 で割ったあまりを求めてください。

制約

  • 2N1062 \leq N \leq 10^6
  • 1M5×1051 \leq M \leq 5 \times 10^5
  • 入力される値はすべて整数である。

入力

入力は以下の形式で標準入力から与えられる。

NN MM

出力

最終的な数列 xx の状態としてありうるものが何通りあるかを 998244353998244353 で割ったあまりを出力せよ。

2 2
3

22 回の操作後の xx の状態としてありうるものは以下の 33 通りです。

  • x=(2,4)x=(2,4)
  • x=(3,3)x=(3,3)
  • x=(4,2)x=(4,2)

たとえば、x=(3,3)x=(3,3) としたい場合、次のように操作すればよいです。

  • 11 回目の操作:i=0,j=1i=0,j=1 とする。xx(0,0)(0,0) から (2,1)(2,1) へ変化する。
  • 22 回目の操作:i=1,j=0i=1,j=0 とする。xx(2,1)(2,1) から (3,3)(3,3) へ変化する。
3 2
19
10 10
211428932
100000 50000
3463133