For problem statement at 0-999/200-299/270-279/279/problemD.txt this is a correct solution, but verifier at 0-999/200-299/270-279/279/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"math/bits"
"os"
)
type Pair struct {
j, l int
}
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
if _, err := fmt.Fscan(reader, &n); err != nil {
return
}
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &a[i])
}
if n == 1 {
fmt.Println(1)
return
}
pairs := make([][]Pair, n)
for k := 1; k < n; k++ {
for j := 0; j < k; j++ {
for l := j; l < k; l++ {
if a[j]+a[l] == a[k] {
pairs[k] = append(pairs[k], Pair{j, l})
}
}
}
if len(pairs[k]) == 0 {
fmt.Println("-1")
return
}
}
memo := make([]int8, 1<<(n+1))
var solve func(k int, mask int) int8
solve = func(k int, mask int) int8 {
if k == 0 {
return 1
}
idx := (1 << (k + 1)) | mask
if memo[idx] != 0 {
return memo[idx]
}
ans := int8(100)
for _, p := range pairs[k] {
j, l := p.j, p.l
newMask := (mask & ^(1 << k)) | (1 << j) | (1 << l)
vk := int8(bits.OnesCount(uint(newMask)))
if (mask&(1<<j)) == 0 || (mask&(1<<l)) == 0 {
// We can overwrite a variable that is no longer needed
} else {
vk++
}
res := solve(k-1, newMask)
if res > vk {
vk = res
}
if vk < ans {
ans = vk
}
}
memo[idx] = ans
return ans
}
res := solve(n-1, 0)
if res >= 100 {
fmt.Println("-1")
} else {
fmt.Println(res)
}
}
```