```go
package main
import (
"fmt"
)
const MOD = 998244353
func power(base, exp int64) int64 {
res := int64(1)
base %= MOD
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % MOD
}
base = (base * base) % MOD
exp /= 2
}
return res
}
func modInverse(n int64) int64 {
return power(n, MOD-2)
}
func main() {
var n, k int
if _, err := fmt.Scan(&n, &k); err != nil {
return
}
fact := make([]int64, 4*n+1)
invFact := make([]int64, 4*n+1)
fact[0] = 1
invFact[0] = 1
for i := 1; i <= 4*n; i++ {
fact[i] = (fact[i-1] * int64(i)) % MOD
}
invFact[4*n] = modInverse(fact[4*n])
for i := 4*n - 1; i >= 1; i-- {
invFact[i] = (invFact[i+1] * int64(i+1)) % MOD
}
nCr := func(n, r int) int64 {
if r < 0 || r > n {
return 0
}
num := fact[n]
den := (invFact[r] * invFact[n-r]) % MOD
return (num * den) % MOD
}
F := make([]int64, 4*n+1)
F2 := make([]int64, 4*n+1)
F3 := make([]int64, 4*n+1)
F4 := make([]int64, 4*n+1)
S := make([]int64, 4*n+1)
F[n] = 1
F2[2*n] = 1
F3[3*n] = 1
F4[4*n] = 1
S[4*n] = 1
for x := n - 1; x >= 1; x-- {
c := nCr(n, x)
c2 := (c * c) % MOD
c3 := (c2 * c) % MOD
c4 := (c3 * c) % MOD
c4_3 := (4 * c) % MOD
c6_2 := (6 * c2) % MOD
c4_1 := (4 * c3) % MOD
c3_2 := (3 * c) % MOD
c3_1 := (3 * c2) % MOD
c2_1 := (2 * c) % MOD
for i := 4 * n; i >= 0; i-- {
new_F4 := F4[i]
if i-x >= 0 {
new_F4 = (new_F4 + F3[i-x]*c4_3) % MOD
}
if i-2*x >= 0 {
new_F4 = (new_F4 + F2[i-2*x]*c6_2) % MOD
}
if i-3*x >= 0 {
new_F4 = (new_F4 + F[i-3*x]*c4_1) % MOD
}
if i == 4*x {
new_F4 = (new_F4 + c4) % MOD
}
F4[i] = new_F4
}
for i := 3 * n; i >= 0; i-- {
new_F3 := F3[i]
if i-x >= 0 {
new_F3 = (new_F3 + F2[i-x]*c3_2) % MOD
}
if i-2*x >= 0 {
new_F3 = (new_F3 + F[i-2*x]*c3_1) % MOD
}
if i == 3*x {
new_F3 = (new_F3 + c3) % MOD
}
F3[i] = new_F3
}
for i := 2 * n; i >= 0; i-- {
new_F2 := F2[i]
if i-x >= 0 {
new_F2 = (new_F2 + F[i-x]*c2_1) % MOD
}
if i == 2*x {
new_F2 = (new_F2 + c2) % MOD
}
F2[i] = new_F2
}
for i := n; i >= 0; i-- {
new_F := F[i]
if i == x {
new_F = (new_F + c) % MOD
}
F[i] = new_F
}
for i := 0; i <= 4*n; i++ {
S[i] = (S[i] + F4[i]) % MOD
}
}
ans := int64(0)
for w := 0; w <= 4*n-1; w++ {
term1 := (S[w] * modInverse(nCr(4*n, w))) % MOD
num := (int64(n) - term1 + MOD) % MOD
den := int64(4*n - w)
E_w := (num * modInverse(den)) % MOD
count := int64(0)
if w < k {
count = 1
} else if w == k {
count = int64(4*n - k)
} else {
count = 0
}
ans = (ans + count*E_w) % MOD
}
fmt.Println(ans)
}
```