For problem statement at 0-999/700-799/770-779/771/problemE.txt this is a correct solution, but verifier at 0-999/700-799/770-779/771/verifierE.go ends with case 3 failed: expected 3 got 4
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func max(a, b int) int {
if a > b {
return a
}
return b
}
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
if _, err := fmt.Fscan(reader, &n); err != nil {
return
}
grid := make([][]int, 2)
for i := 0; i < 2; i++ {
grid[i] = make([]int, n)
for j := 0; j < n; j++ {
fmt.Fscan(reader, &grid[i][j])
}
}
dp1 := make([]int, n+1)
dp2 := make([]int, n+1)
L3 := make([]int, n+1)
last1 := make(map[int]int)
last2 := make(map[int]int)
last3 := make(map[int]int)
last1[0] = 0
last2[0] = 0
last3[0] = 0
pref1 := 0
pref2 := 0
pref3 := 0
L1 := make([]int, n+1)
L2 := make([]int, n+1)
for i := 1; i <= n; i++ {
pref1 += grid[0][i-1]
if val, ok := last1[pref1]; ok {
L1[i] = val + 1
}
last1[pref1] = i
pref2 += grid[1][i-1]
if val, ok := last2[pref2]; ok {
L2[i] = val + 1
}
last2[pref2] = i
pref3 += grid[0][i-1] + grid[1][i-1]
if val, ok := last3[pref3]; ok {
L3[i] = val + 1
}
last3[pref3] = i
}
for i := 1; i <= n; i++ {
dp1[i] = dp1[i-1]
if L1[i] > 0 {
dp1[i] = max(dp1[i], dp1[L1[i]-1]+1)
}
dp2[i] = dp2[i-1]
if L2[i] > 0 {
dp2[i] = max(dp2[i], dp2[L2[i]-1]+1)
}
}
dp := make([]int, n+1)
M := 0
for i := 1; i <= n; i++ {
dp[i] = dp[i-1]
if L3[i] > 0 {
dp[i] = max(dp[i], dp[L3[i]-1]+1)
}
dp[i] = max(dp[i], M+dp1[i]+dp2[i])
M = max(M, dp[i]-dp1[i]-dp2[i])
}
fmt.Println(dp[n])
}
```