考虑一个整数序列的序列 $S$。初始时,$S_0 = (1)$。此后,我们按照以下方式构造 $S_1, S_2, \dots, S_n$。
令 $|S_i|$ 为序列 $S_i$ 的长度,$s_{i,j}$ 为 $S_i$ 的第 $j$ 个元素。则 $S_{i+1}$ 的长度为 $|S_i| + 1$,且可以通过以下两种操作之一从 $S_i$ 得到:
- 在新序列的第 $|S_i| + 1$ 个位置写入 $1$ 或给定的整数 $m$。
- 选择一个下标 $j$ ($1 \le j < |S_i|$),选择一个整数 $x$,使得 $s_{i,j} < x < s_{i,j+1}$ 或 $s_{i,j} > x > s_{i,j+1}$,并将其放置在 $s_{i,j}$ 和 $s_{i,j+1}$ 之间,将右侧部分的下标向后移动 $1$ 位。
给定 $n$ 和 $m$,求出不同的有序序列集合 $S_1, \dots, S_n$ 的数量。如果对于至少一个 $i$ ($1 \le i \le n$),两个集合中的序列 $S_i$ 不同,则认为这两个集合不同。由于答案可能很大,请输出其对 $998\,244\,353$ 取模的结果。
输入格式
输入包含一行,包含两个整数 $n$ 和 $m$ ($1 \le n \le 3000, 2 \le m \le 10^8$)。
输出格式
输出不同序列 $S$ 的数量,对 $998\,244\,353$ 取模。
样例
输入 1
2 3
输出 1
5
输入 2
1024 52689658
输出 2
654836147
说明
以下是第一个样例中所有可能的序列情况:
- $S_1 = (1, 3)$(第一种操作),然后 $S_2 = (1, 2, 3)$(第二种操作);
- $S_1 = (1, 1)$(第一种操作),然后 $S_2 = (1, 1, 3)$(第一种操作);
- $S_1 = (1, 1)$(第一种操作),然后 $S_2 = (1, 1, 1)$(第一种操作);
- $S_1 = (1, 3)$(第一种操作),然后 $S_2 = (1, 3, 3)$(第一种操作);
- $S_1 = (1, 3)$(第一种操作),然后 $S_2 = (1, 3, 1)$(第一种操作)。
因此,答案为 $5$。