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

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

const MAX = 200040

var (
	bit [MAX]int
	seg [4 * MAX]int
)

func update(node, l, r, idx, val int) {
	if l == r {
		seg[node] = val
		return
	}
	mid := (l + r) >> 1
	if idx <= mid {
		update(node<<1, l, mid, idx, val)
	} else {
		update(node<<1|1, mid+1, r, idx, val)
	}
	seg[node] = seg[node<<1] + seg[node<<1|1]
}

func queryMax(node, l, r int) int {
	if seg[node] == 0 {
		return -1
	}
	if l == r {
		return l
	}
	mid := (l + r) >> 1
	if seg[node<<1|1] > 0 {
		return queryMax(node<<1|1, mid+1, r)
	}
	return queryMax(node<<1, l, mid)
}

func add(x int) {
	i := x
	for bit[i] == 1 {
		bit[i] = 0
		update(1, 0, MAX-1, i, 0)
		i++
	}
	bit[i] = 1
	update(1, 0, MAX-1, i, 1)
}

func remove(x int) {
	i := x
	for bit[i] == 0 {
		bit[i] = 1
		update(1, 0, MAX-1, i, 1)
		i++
	}
	bit[i] = 0
	update(1, 0, MAX-1, i, 0)
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var n, q int
	fmt.Fscan(reader, &n, &q)

	a := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(reader, &a[i])
		add(a[i])
	}

	for i := 0; i < q; i++ {
		var k, l int
		fmt.Fscan(reader, &k, &l)
		k--
		remove(a[k])
		add(l)
		a[k] = l
		fmt.Fprintln(writer, queryMax(1, 0, MAX-1))
	}
}
```