← Home
For problem statement at 1000-1999/1100-1199/1150-1159/1153/problemE.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1150-1159/1153/verifierE.go ends with All tests passed can you fix the verifier? ```go
package main

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

var in = bufio.NewReader(os.Stdin)
var out = bufio.NewWriter(os.Stdout)

func query(x1, y1, x2, y2 int) int {
	fmt.Fprintf(out, "? %d %d %d %d\n", x1, y1, x2, y2)
	out.Flush()
	var ans int
	if _, err := fmt.Fscan(in, &ans); err != nil {
		os.Exit(0)
	}
	if ans == -1 {
		os.Exit(0)
	}
	return ans
}

func answer(x1, y1, x2, y2 int) {
	fmt.Fprintf(out, "! %d %d %d %d\n", x1, y1, x2, y2)
	out.Flush()
}

func findCol(n, r int) int {
	l, h := 1, n
	for l < h {
		m := (l + h) >> 1
		if query(r, 1, r, m)%2 == 1 {
			h = m
		} else {
			l = m + 1
		}
	}
	return l
}

func findRow(n, c int) int {
	l, h := 1, n
	for l < h {
		m := (l + h) >> 1
		if query(1, c, m, c)%2 == 1 {
			h = m
		} else {
			l = m + 1
		}
	}
	return l
}

func main() {
	defer out.Flush()

	var n int
	if _, err := fmt.Fscan(in, &n); err != nil {
		return
	}

	oddRows := make([]int, 0, 2)
	for i := 1; i < n; i++ {
		if query(i, 1, i, n)%2 == 1 {
			oddRows = append(oddRows, i)
		}
	}

	if len(oddRows) > 0 {
		if len(oddRows) == 1 {
			oddRows = append(oddRows, n)
		}
		c1 := findCol(n, oddRows[0])
		c2 := findCol(n, oddRows[1])
		answer(oddRows[0], c1, oddRows[1], c2)
		return
	}

	oddCols := make([]int, 0, 2)
	for j := 1; j < n; j++ {
		if query(1, j, n, j)%2 == 1 {
			oddCols = append(oddCols, j)
		}
	}
	if len(oddCols) == 1 {
		oddCols = append(oddCols, n)
	}

	r1 := findRow(n, oddCols[0])
	r2 := findRow(n, oddCols[1])
	answer(r1, oddCols[0], r2, oddCols[1])
}
```