← Home
For problem statement at 0-999/700-799/790-799/797/problemD.txt this is a correct solution, but verifier at 0-999/700-799/790-799/797/verifierD.go ends with All tests passed can you fix the verifier?  ```go
package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	
	scanner.Scan()
	n, _ := strconv.Atoi(scanner.Text())
	
	val := make([]int, n+1)
	left := make([]int, n+1)
	right := make([]int, n+1)
	isChild := make([]bool, n+1)
	
	for i := 1; i <= n; i++ {
		scanner.Scan()
		v, _ := strconv.Atoi(scanner.Text())
		scanner.Scan()
		l, _ := strconv.Atoi(scanner.Text())
		scanner.Scan()
		r, _ := strconv.Atoi(scanner.Text())
		
		val[i] = v
		left[i] = l
		right[i] = r
		
		if l != -1 {
			isChild[l] = true
		}
		if r != -1 {
			isChild[r] = true
		}
	}
	
	root := 1
	for i := 1; i <= n; i++ {
		if !isChild[i] {
			root = i
			break
		}
	}
	
	type frame struct {
		idx  int
		low  int64
		high int64
	}
	
	const INF int64 = 1 << 60
	searchable := make(map[int]bool)
	
	stack := []frame{{root, -INF, INF}}
	
	for len(stack) > 0 {
		f := stack[len(stack)-1]
		stack = stack[:len(stack)-1]
		
		v := int64(val[f.idx])
		if f.low < v && v < f.high {
			searchable[val[f.idx]] = true
		}
		
		if left[f.idx] != -1 {
			stack = append(stack, frame{left[f.idx], f.low, min(f.high, v)})
		}
		if right[f.idx] != -1 {
			stack = append(stack, frame{right[f.idx], max(f.low, v), f.high})
		}
	}
	
	ans := 0
	for i := 1; i <= n; i++ {
		if !searchable[val[i]] {
			ans++
		}
	}
	
	fmt.Println(ans)
}

func min(a, b int64) int64 {
	if a < b {
		return a
	}
	return b
}

func max(a, b int64) int64 {
	if a > b {
		return a
	}
	return b
}
```