For problem statement at 0-999/0-99/0-9/8/problemE.txt this is a correct solution, but verifier at 0-999/0-99/0-9/8/verifierE.go ends with All 100 tests passed. can you fix the verifier? ```go
package main
import (
"fmt"
)
var n int
var k int64
var memo [26][2][2][2]int64
var visited [26][2][2][2]bool
var P string
var L int
func count_valid() int64 {
for i := 0; i < 26; i++ {
for j := 0; j < 2; j++ {
for x := 0; x < 2; x++ {
for y := 0; y < 2; y++ {
visited[i][j][x][y] = false
}
}
}
}
return dp(0, 0, 0, 1)
}
func dp(i int, s1 int, s2 int, is_zero int) int64 {
if s1 == 2 || s2 == 2 {
return 0
}
if i > (n-1)/2 {
if is_zero == 1 {
return 0
}
return 1
}
if visited[i][s1][s2][is_zero] {
return memo[i][s1][s2][is_zero]
}
var ans int64 = 0
var v1_cands []int
if i < L {
v1_cands = []int{int(P[i] - '0')}
} else {
v1_cands = []int{0, 1}
}
var v2_cands []int
if n-1-i < L {
v2_cands = []int{int(P[n-1-i] - '0')}
} else {
v2_cands = []int{0, 1}
}
for _, v1 := range v1_cands {
for _, v2 := range v2_cands {
if i == n-1-i && v1 != v2 {
continue
}
ns1 := s1
if s1 == 0 {
if v1 < v2 {
ns1 = 1
} else if v1 > v2 {
ns1 = 2
}
}
ns2 := s2
if s2 == 0 {
if v1 < 1-v2 {
ns2 = 1
} else if v1 > 1-v2 {
ns2 = 2
}
}
if ns1 == 2 || ns2 == 2 {
continue
}
n_is_zero := is_zero
if v1 != 0 || v2 != 0 {
n_is_zero = 0
}
ans += dp(i+1, ns1, ns2, n_is_zero)
}
}
visited[i][s1][s2][is_zero] = true
memo[i][s1][s2][is_zero] = ans
return ans
}
func main() {
if _, err := fmt.Scan(&n, &k); err != nil {
return
}
P = ""
L = 0
total := count_valid()
if k > total {
fmt.Println("-1")
return
}
for len(P) < n {
P += "0"
L = len(P)
cnt := count_valid()
if k > cnt {
k -= cnt
P = P[:len(P)-1] + "1"
}
}
fmt.Println(P)
}
```