For problem statement at 1000-1999/1600-1699/1610-1619/1610/problemD.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1610-1619/1610/verifierD.go ends with ok can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
scanner.Buffer(make([]byte, 1024*1024), 1024*1024)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
C := make([]int, 32)
for i := 0; i < n; i++ {
scanner.Scan()
a, _ := strconv.Atoi(scanner.Text())
v2 := 0
for a%2 == 0 && a > 0 {
v2++
a /= 2
}
C[v2]++
}
MOD := int64(1000000007)
pow2 := make([]int64, n+1)
pow2[0] = 1
for i := 1; i <= n; i++ {
pow2[i] = (pow2[i-1] * 2) % MOD
}
S := make([]int, 32)
sum := 0
for i := 31; i >= 0; i-- {
S[i] = sum
sum += C[i]
}
ans := int64(0)
if C[0] > 0 {
ways := (pow2[C[0]] - 1 + MOD) % MOD
ways = (ways * pow2[S[0]]) % MOD
ans = (ans + ways) % MOD
}
for k := 1; k < 32; k++ {
if C[k] > 0 {
ways := (pow2[C[k]-1] - 1 + MOD) % MOD
ways = (ways * pow2[S[k]]) % MOD
ans = (ans + ways) % MOD
}
}
fmt.Println(ans)
}