For problem statement at 1000-1999/1500-1599/1530-1539/1538/problemE.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1530-1539/1538/verifierE.go ends with all tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
type State struct {
cnt int64
pre string
suf string
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var t int
if _, err := fmt.Fscan(in, &t); err != nil {
return
}
for i := 0; i < t; i++ {
var n int
fmt.Fscan(in, &n)
vars := make(map[string]State)
var lastVar string
for j := 0; j < n; j++ {
var name, op string
fmt.Fscan(in, &name, &op)
lastVar = name
if op == ":=" {
var val string
fmt.Fscan(in, &val)
c := int64(0)
for k := 0; k <= len(val)-4; k++ {
if val[k:k+4] == "haha" {
c++
}
}
pre := val
if len(pre) > 3 {
pre = pre[:3]
}
suf := val
if len(suf) > 3 {
suf = suf[len(suf)-3:]
}
vars[name] = State{cnt: c, pre: pre, suf: suf}
} else {
var a, plus, b string
fmt.Fscan(in, &a, &plus, &b)
sA := vars[a]
sB := vars[b]
newCnt := sA.cnt + sB.cnt
mid := sA.suf + sB.pre
split := len(sA.suf)
for k := 0; k <= len(mid)-4; k++ {
if mid[k:k+4] == "haha" {
if k < split && k+3 >= split {
newCnt++
}
}
}
newPre := sA.pre
if len(newPre) < 3 {
newPre += sB.pre
if len(newPre) > 3 {
newPre = newPre[:3]
}
}
newSuf := sB.suf
if len(newSuf) < 3 {
newSuf = sA.suf + newSuf
if len(newSuf) > 3 {
newSuf = newSuf[len(newSuf)-3:]
}
}
vars[name] = State{cnt: newCnt, pre: newPre, suf: newSuf}
}
}
fmt.Fprintln(out, vars[lastVar].cnt)
}
}
```