#DPTG3. 小Y的芯片

小Y的芯片

题目描述

你有 nn 个芯片,并且要将它们放置在 xx 个点上,这些点编号为 11xx 。每个点可以放置多个芯片。

在放置芯片后,你可以执行以下四种操作(顺序任意,次数不限):

  • 选择在点 i3i \geq 3 的一个芯片,将其移除,并在 i1i - 1i2i - 2 各放置一个芯片;
  • 选择在相邻点 iii+1i + 1 的两个芯片,将它们移除,并在 i+2i + 2 放置一个新芯片;
  • 选择在点 11 的一个芯片,并将其移到点 22
  • 选择在点 22 的一个芯片,并将其移到点 11

注意,放置操作中芯片的位置不能小于 11,但可以大于 xx

定义芯片放置的成本为:经过以上操作后剩余的最少芯片数。

例如,将两个芯片放在点 33 和一个芯片放在点 55 的成本为 22,因为可以通过以下步骤将芯片数减少到 22

  • 选择点 33 的一个芯片,移除它,并在点 11 和点 22 各放置一个芯片;
  • 选择点 22 和点 33 的芯片,移除它们,并在点 44 放置一个芯片;
  • 选择点 44 和点 55 的芯片,移除它们,并在点 66 放置一个芯片。

给定三个整数 nnxxmm,计算在点 11xx 放置恰好 nn 个芯片且成本等于 mm 的放置方案数,并输出其模 998244353998244353 的结果。如果两个放置方案在某点的芯片数不同,则认为它们是不同的放置方案。

输入格式

一行包含三个整数 nnxxm(1mn1000;2x10)m (1 \le m \le n \le 1000 ; 2 \le x \le 10 )

输出格式

输出一个整数,表示成本等于 mm 的放置方案数,并对 998244353998244353 取模。

输入输出样例 #1

输入 #1

2 3 1

输出 #1

5

输入输出样例 #2

输入 #2

42 10 5

输出 #2

902673363

输入输出样例 #3

输入 #3

1000 10 8

输出 #3

187821763