For problem statement at 1000-1999/1600-1699/1630-1639/1635/problemD.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1630-1639/1635/verifierD.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"math/bits"
"os"
"sort"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n, p int
fmt.Fscan(reader, &n, &p)
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &a[i])
}
sort.Ints(a)
kept := make(map[int]bool)
valid := make([]int, 0, n)
for _, x := range a {
curr := x
isRedundant := false
for curr > 0 {
if kept[curr] {
isRedundant = true
break
}
if curr%2 == 1 {
curr >>= 1
} else if curr%4 == 0 {
curr >>= 2
} else {
break
}
}
if !isRedundant {
kept[x] = true
valid = append(valid, x)
}
}
f := make([]int, p+1)
F := make([]int, p+1)
if p >= 0 {
f[0] = 1
F[0] = 1
}
if p >= 1 {
f[1] = 1
F[1] = 2
}
for i := 2; i <= p; i++ {
f[i] = (f[i-1] + f[i-2]) % 1000000007
F[i] = (F[i-1] + f[i]) % 1000000007
}
ans := 0
for _, x := range valid {
l := bits.Len(uint(x))
if p >= l {
ans = (ans + F[p-l]) % 1000000007
}
}
fmt.Println(ans)
}