For problem statement at 1000-1999/1700-1799/1770-1779/1773/problemG.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1770-1779/1773/verifierG.go ends with All tests passed. can you fix the verifier? ```go
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())
scanner.Scan()
m, _ := strconv.Atoi(scanner.Text())
cnt := make([]int, 1<<m)
for i := 0; i < n; i++ {
scanner.Scan()
s := scanner.Text()
mask := 0
for j := 0; j < m; j++ {
if s[j] == '1' {
mask |= 1 << j
}
}
cnt[mask]++
}
C_all := make([]int, 1<<m)
copy(C_all, cnt)
for i := 0; i < m; i++ {
for mask := (1 << m) - 1; mask >= 0; mask-- {
if (mask & (1 << i)) == 0 {
C_all[mask] += C_all[mask|(1<<i)]
}
}
}
C_sub := make([]int, 1<<m)
copy(C_sub, cnt)
for i := 0; i < m; i++ {
for mask := 0; mask < (1 << m); mask++ {
if (mask & (1 << i)) != 0 {
C_sub[mask] += C_sub[mask^(1<<i)]
}
}
}
var activeMasks []int
var activeCounts []float64
for mask := 0; mask < (1 << m); mask++ {
if cnt[mask] > 0 && (mask&1) == 1 {
activeMasks = append(activeMasks, mask)
activeCounts = append(activeCounts, float64(cnt[mask]))
}
}
statesBySize := make([][]int, m+1)
for S := 1; S < (1 << m); S += 2 {
c := 0
for v := S; v > 0; v >>= 1 {
c += v & 1
}
statesBySize[c] = append(statesBySize[c], S)
}
P := make([]float64, 1<<m)
fullMask := (1 << m) - 1
for size := 1; size <= m; size++ {
for _, S := range statesBySize[size] {
var f float64
for i, msk := range activeMasks {
f += activeCounts[i] * P[S&msk]
}
W := n - C_sub[fullMask^S] - C_all[S]
if W == 0 {
P[S] = 1.0
} else {
P[S] = f / float64(W)
}
}
}
fmt.Printf("%.16f\n", P[fullMask])
}
```