For problem statement at 1000-1999/1300-1399/1320-1329/1326/problemF1.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1320-1329/1326/verifierF1.go ends with All 100 tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"math/bits"
"os"
"sort"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
fmt.Fscan(reader, &n)
adj := make([]string, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &adj[i])
}
dp := make([][]int64, 1<<n)
for i := range dp {
dp[i] = make([]int64, n)
}
for i := 0; i < n; i++ {
dp[1<<i][i] = 1
}
for S := 1; S < (1 << n); S++ {
for u := 0; u < n; u++ {
if dp[S][u] > 0 {
for v := 0; v < n; v++ {
if (S&(1<<v)) == 0 && adj[u][v] == '1' {
dp[S|(1<<v)][v] += dp[S][u]
}
}
}
}
}
B := make([][]int64, n+1)
for i := range B {
B[i] = make([]int64, 1<<n)
}
for S := 1; S < (1 << n); S++ {
var sum int64 = 0
for u := 0; u < n; u++ {
sum += dp[S][u]
}
c := bits.OnesCount(uint(S))
B[c][S] = sum
}
for c := 1; c <= n; c++ {
for i := 0; i < n; i++ {
for S := 0; S < (1 << n); S++ {
if (S & (1 << i)) != 0 {
B[c][S] += B[c][S^(1<<i)]
}
}
}
}
memo := make(map[uint64]int64)
g := make([]int64, 1<<(n-1))
for x := 0; x < (1 << (n - 1)); x++ {
var lengths []int
cur := 1
for i := 0; i < n-1; i++ {
if (x & (1 << i)) != 0 {
cur++
} else {
lengths = append(lengths, cur)
cur = 1
}
}
lengths = append(lengths, cur)
sort.Ints(lengths)
var code uint64 = 0
for _, l := range lengths {
code = (code << 4) | uint64(l)
}
if val, exists := memo[code]; exists {
g[x] = val
} else {
var ans int64 = 0
for S := 0; S < (1 << n); S++ {
var term int64 = 1
for _, l := range lengths {
term *= B[l][S]
}
if (n-bits.OnesCount(uint(S)))%2 == 1 {
ans -= term
} else {
ans += term
}
}
memo[code] = ans
g[x] = ans
}
}
for i := 0; i < n-1; i++ {
for x := 0; x < (1 << (n - 1)); x++ {
if (x & (1 << i)) == 0 {
g[x] -= g[x|(1<<i)]
}
}
}
out := bufio.NewWriter(os.Stdout)
for x := 0; x < (1 << (n - 1)); x++ {
if x > 0 {
out.WriteByte(' ')
}
fmt.Fprint(out, g[x])
}
out.WriteByte('\n')
out.Flush()
}
```