#20. 凸序列

凸序列

凸序列

所有输入均从 convex.in 读取,所有输出均写入 convex.out。

时间限制:44 秒。内存限制:256256 MiB。

题目描述

给定两个正整数 N,HN,H 和一个非负整数 MM。考虑所有长度为 NN 的非负整数序列 A1,A2,…,ANA_1,A_2,\ldots,A_N,要求元素总和恰好为 MM,并且对于所有 2≤i≤N−12\le i\le N-1,都有

Ai−1+Ai+1≥2Ai.A_{i-1}+A_{i+1}\ge2A_i.

对于每个满足要求的序列 AA,将其中所有大于 HH 的元素改成 HH,得到序列 BB,即 Bi=min⁡(Ai,H)B_i=\min(A_i,H)。

求一共能得到多少个不同的序列 BB,答案对 998244353998244353 取模。多个序列 AA 得到同一个序列 BB 时,只计为一种。

输入格式

输入一行,包含三个整数 N,M,HN,M,H。

输出格式

输出一行一个整数,表示不同序列 BB 的数量对 998244353998244353 取模后的结果。

样例

样例 1

输入:

3 6 2

输出:

15

例如,(2,0,4)(2,0,4)、(3,0,3)(3,0,3)、(4,0,2)(4,0,2) 都满足要求,且都会得到 (2,0,2)(2,0,2),这一结果只计一次。

本例共有 1818 个满足要求的原序列,它们得到的不同结果共有 1515 个。

附加样例

样例 2 见 down/convex2.in\texttt{down/convex2.in} 与 down/convex2.ans\texttt{down/convex2.ans},满足测试点 5∼65\sim6 的限制。

样例 3 见 down/convex3.in\texttt{down/convex3.in} 与 down/convex3.ans\texttt{down/convex3.ans},满足测试点 7∼107\sim10 的限制。

样例 4 见 down/convex4.in\texttt{down/convex4.in} 与 down/convex4.ans\texttt{down/convex4.ans},满足测试点 15∼2015\sim20 的限制。

数据范围

测试点编号 N≤N\le M≤M\le H≤H\le 特殊性质
1∼41\sim4 88 2020 5050 无
5∼65\sim6 4040 10001000 11
7∼107\sim10 2525 5050 AA
11∼1411\sim14 10001000 3030 无
15∼2015\sim20 5050

对于所有测试点,1≤N≤401\le N\le40,0≤M≤10000\le M\le1000,1≤H≤501\le H\le50。

特殊性质 AA:H>MH>M。