For problem statement at 2000-2999/2000-2099/2040-2049/2045/problemH.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2040-2049/2045/verifierH.go ends with All 60 tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
S := scanner.Text()
n := len(S)
lcp := make([][]uint16, n+1)
for i := range lcp {
lcp[i] = make([]uint16, n+1)
}
for i := n - 1; i >= 0; i-- {
for j := n - 1; j >= 0; j-- {
if S[i] == S[j] {
lcp[i][j] = 1 + lcp[i+1][j+1]
}
}
}
isLess := func(a, b, c, d int) bool {
len1 := b - a
len2 := d - c
minLen := len1
if len2 < minLen {
minLen = len2
}
if int(lcp[a][c]) >= minLen {
return len1 < len2
}
return S[a+int(lcp[a][c])] < S[c+int(lcp[a][c])]
}
dp := make([]int, n+1)
prev := make([]int, n+1)
for i := range dp {
dp[i] = -1
}
dp[0] = 0
prev[0] = -1
for i := 1; i <= n; i++ {
for j := 0; j < i; j++ {
if dp[j] == -1 {
continue
}
if j == 0 {
if dp[i] < 1 {
dp[i] = 1
prev[i] = 0
}
} else {
if isLess(prev[j], j, j, i) {
if dp[i] < dp[j]+1 {
dp[i] = dp[j] + 1
prev[i] = j
}
}
}
}
}
words := make([]string, 0, dp[n])
pos := n
for pos > 0 {
start := prev[pos]
words = append(words, S[start:pos])
pos = start
}
for i, j := 0, len(words)-1; i < j; i, j = i+1, j-1 {
words[i], words[j] = words[j], words[i]
}
fmt.Println(dp[n])
for _, w := range words {
fmt.Println(w)
}
}
```