← Home
```go
package main

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

const MOD int64 = 998244353

func main() {
	in := bufio.NewReader(os.Stdin)
	var t int
	fmt.Fscan(in, &t)
	for i := 0; i < t; i++ {
		var n, k int
		fmt.Fscan(in, &n, &k)
		L := k - 1
		dp := make([][]int64, n+1)
		for i := 0; i <= n; i++ {
			dp[i] = make([]int64, L+1)
		}
		for a1 := 0; a1 <= L; a1++ {
			maxa0 := L - a1
			c := a1 + 1
			for a0 := 0; a0 <= maxa0; a0++ {
				b := a0 + 1
				term := b * c
				if term > n {
					continue
				}
				dp[term][a1] = (dp[term][a1] + 1) % MOD
			}
		}
		for s := 0; s <= n; s++ {
			for prev := 0; prev <= L; prev++ {
				val := dp[s][prev]
				if val == 0 {
					continue
				}
				p := prev + 1
				ns := n - s
				if ns < p {
					continue
				}
				max_n := (ns / p) - 1
				if max_n < 0 {
					continue
				}
				maxnew := L - prev
				if max_n < maxnew {
					maxnew = max_n
				}
				for new := 0; new <= maxnew; new++ {
					delta := p * (new + 1)
					news := s + delta
					dp[news][new] = (dp[news][new] + val) % MOD
				}
			}
		}
		ans := int64(0)
		for prev := 0; prev <= L; prev++ {
			ans = (ans + dp[n][prev]) % MOD
		}
		fmt.Println(ans)
	}
}
```