Xét $S$ là một dãy các dãy số nguyên. Ban đầu, $S_0 = (1)$. Sau đó, chúng ta xây dựng $S_1, S_2, \dots, S_n$ như sau.
Gọi $|S_i|$ là độ dài của dãy $S_i$, và $s_{i,j}$ là phần tử thứ $j$ của $S_i$. Khi đó $S_{i+1}$ sẽ có độ dài $|S_i| + 1$ và có thể thu được từ $S_i$ bằng cách sử dụng một trong hai thao tác sau:
- Viết số 1 hoặc số nguyên $m$ cho trước vào vị trí thứ $|S_i| + 1$ của dãy mới.
- Chọn một chỉ số $j$ ($1 \le j < |S_i|$), chọn số nguyên $x$ sao cho $s_{i,j} < x < s_{i,j+1}$ hoặc $s_{i,j} > x > s_{i,j+1}$, và đặt nó vào giữa $s_{i,j}$ và $s_{i,j+1}$, dịch chuyển các chỉ số của phần bên phải sang phải 1 đơn vị.
Cho $n$ và $m$, hãy tìm số lượng các tập hợp có thứ tự khác nhau của các dãy $S_1, \dots, S_n$. Hai tập hợp được coi là khác nhau nếu tồn tại ít nhất một chỉ số $i$ từ $1$ đến $n$ sao cho các dãy $S_i$ trong các tập hợp đó khác nhau. Vì kết quả có thể rất lớn, hãy in ra kết quả theo modulo $998\,244\,353$.
Dữ liệu vào
Dữ liệu vào gồm một dòng chứa hai số nguyên $n$ và $m$ ($1 \le n \le 3000, 2 \le m \le 10^8$).
Dữ liệu ra
In ra số lượng các dãy $S$ khác nhau theo modulo $998\,244\,353$.
Ví dụ
Dữ liệu vào 1
2 3
Dữ liệu ra 1
5
Ghi chú
Dưới đây là các dãy có thể có trong ví dụ đầu tiên:
- $S_1 = (1, 3)$ (thao tác thứ nhất), sau đó $S_2 = (1, 2, 3)$ (thao tác thứ hai);
- $S_1 = (1, 1)$ (thao tác thứ nhất), sau đó $S_2 = (1, 1, 3)$ (thao tác thứ nhất);
- $S_1 = (1, 1)$ (thao tác thứ nhất), sau đó $S_2 = (1, 1, 1)$ (thao tác thứ nhất);
- $S_1 = (1, 3)$ (thao tác thứ nhất), sau đó $S_2 = (1, 3, 3)$ (thao tác thứ nhất);
- $S_1 = (1, 3)$ (thao tác thứ nhất), sau đó $S_2 = (1, 3, 1)$ (thao tác thứ nhất).
Do đó, kết quả là 5.
Dữ liệu vào 2
1024 52689658
Dữ liệu ra 2
654836147