考慮一個整數序列的序列 $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
輸出
5
範例 2
輸入
1024 52689658
輸出
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$。