← Home
For problem statement at 1000-1999/1000-1099/1000-1009/1003/problemE.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1000-1009/1003/verifierE.go ends with case 23 failed: expected YES but got NO

exit status 1 can you fix the verifier? ```go
package main

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

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

	var n, d, k int
	fmt.Fscan(in, &n, &d, &k)

	if n == 1 {
		if d == 0 {
			fmt.Fprintln(out, "YES")
		} else {
			fmt.Fprintln(out, "NO")
		}
		return
	}

	if d == 0 || d >= n {
		fmt.Fprintln(out, "NO")
		return
	}

	if k == 1 {
		if n == 2 && d == 1 {
			fmt.Fprintln(out, "YES")
			fmt.Fprintln(out, 1, 2)
		} else {
			fmt.Fprintln(out, "NO")
		}
		return
	}

	if k == 2 {
		if n == d+1 {
			fmt.Fprintln(out, "YES")
			for i := 1; i < n; i++ {
				fmt.Fprintln(out, i, i+1)
			}
		} else {
			fmt.Fprintln(out, "NO")
		}
		return
	}

	need := n - (d + 1)
	if int64(need) > int64(d-1)*int64(k-2) {
		fmt.Fprintln(out, "NO")
		return
	}

	fmt.Fprintln(out, "YES")

	for i := 1; i <= d; i++ {
		fmt.Fprintln(out, i, i+1)
	}

	cur := d + 2
	for i := 2; i <= d && cur <= n; i++ {
		for j := 0; j < k-2 && cur <= n; j++ {
			fmt.Fprintln(out, i, cur)
			cur++
		}
	}
}
```