$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|$)를 선택하고, $s_{i,j} < x < s_{i,j+1}$ 또는 $s_{i,j} > x > s_{i,j+1}$을 만족하는 정수 $x$를 선택하여 $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$이다.