For problem statement at 0-999/600-699/620-629/626/problemF.txt this is a correct solution, but verifier at 0-999/600-699/620-629/626/verifierF.go ends with passed 100/100 can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func main() {
in := bufio.NewReader(os.Stdin)
var n, k int
fmt.Fscan(in, &n, &k)
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &a[i])
}
sort.Ints(a)
mod := int(1e9 + 7)
dp := make([][]int, n+1)
next := make([][]int, n+1)
for i := 0; i <= n; i++ {
dp[i] = make([]int, k+1)
next[i] = make([]int, k+1)
}
dp[0][0] = 1
for i := 0; i < n; i++ {
diff := 0
if i > 0 {
diff = a[i] - a[i-1]
}
for j := 0; j <= n; j++ {
for sum := 0; sum <= k; sum++ {
next[j][sum] = 0
}
}
for j := 0; j <= i && j <= n; j++ {
for sum := 0; sum <= k; sum++ {
if dp[j][sum] == 0 {
continue
}
ns := sum + j*diff
if ns > k {
continue
}
next[j][ns] = (next[j][ns] + dp[j][sum]*(j+1)) % mod
if j+1 <= n {
next[j+1][ns] = (next[j+1][ns] + dp[j][sum]) % mod
}
if j > 0 {
next[j-1][ns] = (next[j-1][ns] + dp[j][sum]*j) % mod
}
}
}
for j := 0; j <= n; j++ {
for sum := 0; sum <= k; sum++ {
dp[j][sum] = next[j][sum]
}
}
}
ans := 0
for sum := 0; sum <= k; sum++ {
ans = (ans + dp[0][sum]) % mod
}
fmt.Println(ans)
}