← Home
For problem statement at 0-999/300-399/340-349/341/problemD.txt this is a correct solution, but verifier at 0-999/300-399/340-349/341/verifierD.go ends with All 125 tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"os"
	"strconv"
)

var bit [2][2][1005][1005]uint64
var n int

func update_bit(x, y int, v uint64) {
	if x > n || y > n {
		return
	}
	px := x % 2
	py := y % 2
	for i := x; i <= n; i += i & -i {
		for j := y; j <= n; j += j & -j {
			bit[px][py][i][j] ^= v
		}
	}
}

func query_bit(x, y int) uint64 {
	if x == 0 || y == 0 {
		return 0
	}
	px := x % 2
	py := y % 2
	var ans uint64 = 0
	for i := x; i > 0; i -= i & -i {
		for j := y; j > 0; j -= j & -j {
			ans ^= bit[px][py][i][j]
		}
	}
	return ans
}

var buffer []byte = make([]byte, 65536)
var pos, bufLen int

func nextByte() byte {
	if pos >= bufLen {
		pos = 0
		var err error
		bufLen, err = os.Stdin.Read(buffer)
		if err != nil || bufLen == 0 {
			return 0
		}
	}
	b := buffer[pos]
	pos++
	return b
}

func readInt() int {
	var c byte
	for {
		c = nextByte()
		if c >= '0' && c <= '9' {
			break
		}
		if c == 0 {
			return 0
		}
	}
	var res int
	for c >= '0' && c <= '9' {
		res = res*10 + int(c-'0')
		c = nextByte()
	}
	return res
}

func readUint64() uint64 {
	var c byte
	for {
		c = nextByte()
		if c >= '0' && c <= '9' {
			break
		}
		if c == 0 {
			return 0
		}
	}
	var res uint64
	for c >= '0' && c <= '9' {
		res = res*10 + uint64(c-'0')
		c = nextByte()
	}
	return res
}

func main() {
	n = readInt()
	if n == 0 {
		return
	}
	m := readInt()

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

	for i := 0; i < m; i++ {
		op := readInt()
		if op == 1 {
			x0 := readInt()
			y0 := readInt()
			x1 := readInt()
			y1 := readInt()
			ans := query_bit(x1, y1) ^ query_bit(x0-1, y1) ^ query_bit(x1, y0-1) ^ query_bit(x0-1, y0-1)
			out.WriteString(strconv.FormatUint(ans, 10))
			out.WriteByte('\n')
		} else if op == 2 {
			x0 := readInt()
			y0 := readInt()
			x1 := readInt()
			y1 := readInt()
			v := readUint64()
			update_bit(x0, y0, v)
			update_bit(x1+1, y0, v)
			update_bit(x0, y1+1, v)
			update_bit(x1+1, y1+1, v)
		}
	}
}
```