Gửi bài giải


Điểm: 0,10 (OI)
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python

Kazuma có hai số nguyên ~N~ và ~M~. Megumin muốn đếm số lượng dãy ~A~ khác nhau có ~N~ phần tử thỏa mãn:

  • ~A_i \in \mathbb{N}, \forall i = 1, 2, \ldots , N~,
  • ~\sum_{i = 1}^N A_i = M~,
  • ~A_1 \oplus A_2 \oplus \ldots \oplus A_N = 0~. Ở đây ~\oplus~ là phép XOR nhị phân.

Hai dãy ~X, Y~ độ dài ~N~ được gọi là khác nhau nếu tồn tại vị trí ~i~ ~(1 \le i \le N)~ mà ~X_i \neq Y_i~. Dù là pháp sư có sức mạnh tối thượng, nhưng vì chỉ biết một loại phép thuật nên bài toán này vẫn rất khó với Megumin. Bạn hãy giúp Megumin nhé!

Input

  • Gồm một dòng duy nhất chứa hai số ~N, M~ ~(1 \le N, M \le 10^5)~.

Output

  • In ra duy nhất một số nguyên là số lượng dãy ~A~ thỏa mãn. Vì đáp án có thể rất lớn nên hãy in ra đáp án modulo ~998244353~.

Scoring

  • Subtask 1 ~(5p)~: ~N = 2~
  • Subtask 2 ~(21p)~: ~N, M \le 100~
  • Subtask 3 ~(28p)~: ~M \le 20~
  • Subtask 4 ~(30p)~: ~N, M \le 5000~
  • Subtask 5 ~(16p)~: Không có giới hạn gì thêm.

Sample Input

3 6

Sample Output

9

Notes

Có 9 dãy ~A~ thỏa mãn:

  • ~[1, 2, 3]~, ~[1, 3, 2]~, ~[2, 1, 3]~, ~[2, 3, 1]~, ~[3, 1, 2]~, ~[3, 2, 1]~,
  • ~[0, 3, 3]~, ~[3, 0, 3]~, ~[3, 3, 0]~.