问题陈述
我们有一个序列 N 的整数:x=(x0,x1,⋯,xN−1)。最初,对于每个 i (0≤i≤N−1),xi=0。
Snuke 将执行以下操作恰好 M 次:
- 选择两个不同的索引 i,j (0≤i,j≤N−1,i=j)。然后,将 xi 替换为 xi+2,将 xj 替换为 xj+1。
计算经过 M 次操作后可能得到的不同序列数。由于可能非常大,取结果对 998244353 求模。
约束条件
- 2≤N≤106
- 1≤M≤5×105
- 输入中的所有值都是整数。
输入
输入的格式如下所示:
N M
输出
按照 998244353 模取余后的数,打印经过 M 次操作后可能得到的不同序列数。
示例输入 1
2 2
示例输出 1
3
经过两次操作后,可能得到三种不同的结果:
- x=(2,4)
- x=(3,3)
- x=(4,2)
例如,x=(3,3) 可以通过以下操作序列得到:
- 首先,选择 i=0,j=1,将 x 从 (0,0) 改变为 (2,1)。
- 其次,选择 i=1,j=0,将 x 从 (2,1) 改变为 (3,3)。
示例输入 2
3 2
示例输出 2
19
示例输入 3
10 10
示例输出 3
211428932
示例输入 4
100000 50000
示例输出 4
3463133