← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

const MOD = 998244353

func main() {
	reader := bufio.NewReader(os.Stdin)
	var n, k int
	fmt.Fscan(reader, &n, &k)

	if k%2 != 0 {
		fmt.Println(0)
		return
	}

	K := k / 2

	fact := make([]int64, n+K+1)
	inv := make([]int64, n+K+1)
	fact[0] = 1
	inv[0] = 1
	for i := 1; i <= n+K; i++ {
		fact[i] = (fact[i-1] * int64(i)) % MOD
	}
	inv[n+K] = power(fact[n+K], MOD-2)
	for i := n + K - 1; i >= 1; i-- {
		inv[i] = (inv[i+1] * int64(i+1)) % MOD
	}

	nCr := func(n, r int) int64 {
		if r < 0 || r > n {
			return 0
		}
		num := fact[n]
		den := (inv[r] * inv[n-r]) % MOD
		return (num * den) % MOD
	}

	ans := int64(0)

	for v := 1; v <= n; v++ {
		term := (nCr(n, v) * nCr(int(int64(v)*int64(n)+int64(K)-1), n+K-1)) % MOD
		if (n-v)%2 == 1 {
			ans = (ans - term + MOD) % MOD
		} else {
			ans = (ans + term) % MOD
		}
	}

	ans = (ans * 2) % MOD
	if K == 0 {
		term := int64(1)
		for i := 1; i <= n; i++ {
			term = (term * int64(i)) % MOD
		}
		ans = (ans - term + MOD) % MOD
	}

	fmt.Println(ans)
}

func power(a, b int64) int64 {
	res := int64(1)
	for b > 0 {
		if b&1 == 1 {
			res = (res * a) % MOD
		}
		a = (a * a) % MOD
		b >>= 1
	}
	return res
}