For problem statement at 0-999/500-599/550-559/557/problemD.txt this is a correct solution, but verifier at 0-999/500-599/550-559/557/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
var n, m int
fmt.Fscan(in, &n, &m)
adj := make([][]int, n+1)
for i := 0; i < m; i++ {
var a, b int
fmt.Fscan(in, &a, &b)
adj[a] = append(adj[a], b)
adj[b] = append(adj[b], a)
}
visited := make([]bool, n+1)
color := make([]int, n+1)
for i := 0; i <= n; i++ {
color[i] = -1
}
hasOdd := false
var ways int64 = 0
for i := 1; i <= n; i++ {
if visited[i] {
continue
}
var cnt0, cnt1 int64 = 0, 0
compOdd := false
q := make([]int, 0)
visited[i] = true
color[i] = 0
cnt0++
q = append(q, i)
for j := 0; j < len(q); j++ {
u := q[j]
for _, v := range adj[u] {
if color[v] == -1 {
color[v] = 1 - color[u]
if color[v] == 0 {
cnt0++
} else {
cnt1++
}
visited[v] = true
q = append(q, v)
} else if color[v] == color[u] {
compOdd = true
}
}
}
if compOdd {
hasOdd = true
} else {
ways += cnt0 * (cnt0 - 1) / 2
ways += cnt1 * (cnt1 - 1) / 2
}
}
if hasOdd {
fmt.Println(0, 1)
} else if ways > 0 {
fmt.Println(1, ways)
} else {
var nn int64 = int64(n)
var mm int64 = int64(m)
var ww int64
if mm == 0 {
ww = nn * (nn - 1) * (nn - 2) / 6
fmt.Println(3, ww)
} else {
ww = mm * (nn - 2)
fmt.Println(2, ww)
}
}
}
```