← Home
For problem statement at 1000-1999/1200-1299/1250-1259/1252/problemE.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1250-1259/1252/verifierE.go ends with reference runtime error on test 1: exec: "refE.bin": executable file not found in $PATH
exit status 1 can you fix the verifier? ```go
package main

import (
	"io"
	"os"
	"strconv"
)

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

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

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	nextInt := func() int64 {
		for idx < len(data) && (data[idx] == ' ' || data[idx] == '\n' || data[idx] == '\r' || data[idx] == '\t') {
			idx++
		}
		var sign int64 = 1
		if idx < len(data) && data[idx] == '-' {
			sign = -1
			idx++
		}
		var v int64
		for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
			v = v*10 + int64(data[idx]-'0')
			idx++
		}
		return sign * v
	}

	n := int(nextInt())
	L := nextInt()
	R := nextInt()
	K := nextInt()

	signs := make([]byte, max(0, n-1))
	if n > 0 {
		prev := nextInt()
		for i := 0; i < n-1; i++ {
			cur := nextInt()
			if prev < cur {
				signs[i] = '<'
			} else if prev == cur {
				signs[i] = '='
			} else {
				signs[i] = '>'
			}
			prev = cur
		}
	}

	if n == 0 {
		os.Stdout.Write([]byte("\n"))
		return
	}

	lo := make([]int64, n)
	hi := make([]int64, n)
	lo[n-1], hi[n-1] = L, R

	for i := n - 2; i >= 0; i-- {
		switch signs[i] {
		case '=':
			lo[i] = lo[i+1]
			hi[i] = hi[i+1]
		case '<':
			lo[i] = max64(L, lo[i+1]-K)
			hi[i] = min64(R, hi[i+1]-1)
		case '>':
			lo[i] = max64(L, lo[i+1]+1)
			hi[i] = min64(R, hi[i+1]+K)
		}
		if lo[i] > hi[i] {
			os.Stdout.Write([]byte("-1\n"))
			return
		}
	}

	b := make([]int64, n)
	b[0] = lo[0]

	for i := 1; i < n; i++ {
		switch signs[i-1] {
		case '=':
			b[i] = b[i-1]
			if b[i] < lo[i] || b[i] > hi[i] {
				os.Stdout.Write([]byte("-1\n"))
				return
			}
		case '<':
			left := max64(lo[i], b[i-1]+1)
			right := min64(hi[i], b[i-1]+K)
			if left > right {
				os.Stdout.Write([]byte("-1\n"))
				return
			}
			b[i] = left
		case '>':
			left := max64(lo[i], b[i-1]-K)
			right := min64(hi[i], b[i-1]-1)
			if left > right {
				os.Stdout.Write([]byte("-1\n"))
				return
			}
			b[i] = left
		}
	}

	out := make([]byte, 0, n*12)
	for i, v := range b {
		if i > 0 {
			out = append(out, ' ')
		}
		out = strconv.AppendInt(out, v, 10)
	}
	out = append(out, '\n')
	os.Stdout.Write(out)
}

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