← Home
For problem statement at 1000-1999/1600-1699/1690-1699/1697/problemF.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1690-1699/1697/verifierF.go ends with failed to build reference: exit status 1
# command-line-arguments
./1697F.go:5:4: "fmt" imported and not used

exit status 1 can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
	b, _ := io.ReadAll(os.Stdin)
	pos := 0
	nextInt := func() int {
		for pos < len(b) && b[pos] <= ' ' {
			pos++
		}
		if pos >= len(b) {
			return 0
		}
		res := 0
		for pos < len(b) && b[pos] > ' ' {
			res = res*10 + int(b[pos]-'0')
			pos++
		}
		return res
	}

	t := nextInt()
	if t == 0 {
		return
	}

	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	maxN := 20000*9 + 5
	adj := make([][]int, 2*maxN)
	dfn := make([]int, 2*maxN)
	low := make([]int, 2*maxN)
	scc := make([]int, 2*maxN)
	inStk := make([]bool, 2*maxN)
	stk := make([]int, 0, 2*maxN)

	for tc := 0; tc < t; tc++ {
		n := nextInt()
		m := nextInt()
		k := nextInt()

		nVar := n*(k-1) + 1
		nVertices := 2 * nVar

		for i := 0; i < nVertices; i++ {
			adj[i] = adj[i][:0]
			dfn[i] = 0
			low[i] = 0
			scc[i] = 0
			inStk[i] = false
		}

		addClause := func(u, v int) {
			adj[u^1] = append(adj[u^1], v)
			adj[v^1] = append(adj[v^1], u)
		}

		lit := func(i, v int) int {
			if v <= 1 {
				return 0
			}
			if v >= k+1 {
				return 1
			}
			return 2 * ((i-1)*(k-1) + v - 1)
		}

		addClause(0, 0)

		for i := 1; i <= n; i++ {
			for v := 2; v <= k; v++ {
				addClause(lit(i, v)^1, lit(i, v-1))
			}
		}

		for i := 1; i < n; i++ {
			for v := 2; v <= k; v++ {
				addClause(lit(i, v)^1, lit(i+1, v))
			}
		}

		for idx := 0; idx < m; idx++ {
			typ := nextInt()
			if typ == 1 {
				i := nextInt()
				x := nextInt()
				addClause(lit(i, x)^1, lit(i, x+1))
			} else if typ == 2 {
				i := nextInt()
				j := nextInt()
				x := nextInt()
				for u := 1; u <= k; u++ {
					addClause(lit(i, u)^1, lit(j, x-u+1)^1)
				}
			} else if typ == 3 {
				i := nextInt()
				j := nextInt()
				x := nextInt()
				for u := 1; u <= k; u++ {
					addClause(lit(j, u+1), lit(i, x-u))
				}
			}
		}

		timer := 0
		sccCnt := 0
		stk = stk[:0]

		var tarjan func(u int)
		tarjan = func(u int) {
			timer++
			dfn[u] = timer
			low[u] = timer
			stk = append(stk, u)
			inStk[u] = true
			for _, v := range adj[u] {
				if dfn[v] == 0 {
					tarjan(v)
					if low[v] < low[u] {
						low[u] = low[v]
					}
				} else if inStk[v] {
					if dfn[v] < low[u] {
						low[u] = dfn[v]
					}
				}
			}
			if low[u] == dfn[u] {
				for {
					v := stk[len(stk)-1]
					stk = stk[:len(stk)-1]
					inStk[v] = false
					scc[v] = sccCnt
					if u == v {
						break
					}
				}
				sccCnt++
			}
		}

		for i := 0; i < nVertices; i++ {
			if dfn[i] == 0 {
				tarjan(i)
			}
		}

		possible := true
		for i := 0; i < nVar; i++ {
			if scc[2*i] == scc[2*i+1] {
				possible = false
				break
			}
		}

		if !possible {
			fmt.Fprintln(out, "-1")
		} else {
			for i := 1; i <= n; i++ {
				val := 1
				for v := 2; v <= k; v++ {
					varIdx := (i-1)*(k-1) + v - 1
					if scc[2*varIdx] < scc[2*varIdx+1] {
						val = v
					}
				}
				if i > 1 {
					out.WriteByte(' ')
				}
				fmt.Fprint(out, val)
			}
			out.WriteByte('\n')
		}
	}
}
```