岗位分配
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

学校马上要举行校运会了,有众多志愿岗位需要被分配。但是负责老师临时有事现在由你来分配这些岗位。
现在有n个岗位,m位志愿者,每个岗位至少需要a_i个志愿者,你需要将志愿者分配到岗位上,并且可以有志愿者空闲下来作预备。
请你给出可能的分配情况总数。
答案可能会很大,故需要对998,244,353取模。
注:所有岗位需求志愿者的总和不超过志愿者的总和且志愿者间无差别。

输入描述:

第一行输入两个字母nm
之后的一行输入n个被空格隔开的数,表示每个岗位至少需要的志愿者数。
1\leq n\leq1000,1\leq a_i \leq m \leq 2000

输出描述:

一个数字,表示可能的分配情况总数。
示例1

输入

复制
3 10
1 2 3

输出

复制
35