试题排版
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

玄神在寒假期间接到了组织图灵杯命题的任务,于是他带领着俱乐部的命题组制作出了若干道不同难度系数的题目。

假设每道题均有一个难度系数 ,而且每种难度系数的题目都有任意多道,现在,玄神想要从这些题目中选取若干道题目来组建一套试题。考虑到题目不能太难,所以选出的题目的难度系数总和要等于 m ;并且为了让试题更加人性化,所以要按照难度系数从小到大的顺序排版,你能帮忙计算出一共有多少种不同的试题排版方案数吗?由于答案可能很大,所以需要输出答案对 998244353 取模后的结果。

两种方案被认为是不同的,当且仅当在两种排版方案中,存在某一个难度系数的题目被选出的数量不同。

如: 时,所有可能的方案为:,其中方案表示选了四道难度系数为 1 的题目,方案表示选了两道难度系数为 1 的题目和一道难度系数为 2 的题目。

输入描述:

输入包含一个正整数  ,表示试题中所有题目的难度系数和。

输出描述:

输出一个整数,表示试题的排版方案数对 998244353 取模后的结果。
示例1

输入

复制
4

输出

复制
5
示例2

输入

复制
233

输出

复制
77164040