younik要挂号
题号:NC210725
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

younik来到校医院之后打算挂号,校医院最近出台了一个新的挂号制度。医院里有n个专家,专家有一定的挂号费用且挂号费用是一个从1到m的整数,younik别出心裁,打算选择n个专家进行挂号,并把这n个专家的挂号费用排成一个序列a。
求满足下列条件的长度为n的序列a的个数
1. 该序列包含n个专家的挂号费用;
2. 对于每一个序列,有且仅有一对相同的元素;
3. 对于每一个序列,存在一个位置i,使得位置i之前的挂号费用严格递增,位置i之后的挂号费用严格递减,即a[j]<a[j+1](j<i),a[j]>a[j+1](j>=i)。

输入描述:

输入包含一行,一行内有两个整数,分别是n和m(2nm2105)。

输出描述:

输出一个整数,即为满足条件的序列a的个数,由于数目过大,需要对998244353取模。
示例1

输入

复制
3 4

输出

复制
6

说明

满足条件的序列有6个,分别是[1,2,1]、[1,3,1]、[1,4,1]、[2,3,2]、[2,4,2]、[3,4,3]
示例2

输入

复制
3 5

输出

复制
10