```go
package main
import (
"fmt"
"strings"
)
func main() {
var n, k int
fmt.Scan(&n, &k)
const MOD = 998244353
ans := make([]int, n+1)
prev := make([]int, n+1)
curr := make([]int, n+1)
prev[0] = 1
for t := 1; t <= n+1; t++ {
d := k + t - 1
if d > n {
break
}
for y := 0; y <= n; y++ {
if y < d {
curr[y] = 0
} else {
curr[y] = (curr[y-d] + prev[y-d]) % MOD
}
}
for y := 1; y <= n; y++ {
ans[y] = (ans[y] + curr[y]) % MOD
}
prev, curr = curr, prev
}
var output []string
for x := 1; x <= n; x++ {
output = append(output, fmt.Sprint(ans[x]))
}
fmt.Println(strings.Join(output, " "))
}
```