给定两个整数 $N$ 和 $M$,计算长度为 $N$ 的序列 $A = (A_1, A_2, \dots, A_N)$ 的数量,其中每个 $A_i$ 都是 $0$ 到 $M$ 之间的整数(包含 $0$ 和 $M$),且满足以下条件:
- 对于所有 $i = 1, 2, \dots, N$,满足 $A_i + (A_{i-1} \& A_{i+1}) = M$,其中 $A_0 := A_N$ 且 $A_{N+1} := A_1$。这里 $\&$ 表示按位与运算。
输出答案对 $998244353$ 取模的结果。
输入格式
输入通过标准输入给出,格式如下:
$N \ M$
- $3 \le N \le 10^9$
- $0 \le M \le 10^9$
- 所有输入值均为整数。
输出格式
在一行中输出答案。
样例
样例输入 1
3 2
样例输出 1
4
样例输入 2
3 0
样例输出 2
1
样例输入 3
100 100
样例输出 3
343406454
说明
在第一个样例中,共有 4 个序列满足条件:$(0, 2, 2), (2, 0, 2), (2, 2, 0), (1, 1, 1)$。 在第二个样例中,唯一满足条件的序列是 $(0, 0, 0)$。