← Home
For problem statement at 0-999/0-99/60-69/65/problemB.txt this is a correct solution, but verifier at 0-999/0-99/60-69/65/verifierB.go ends with All tests passed can you fix the verifier? ```go
package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Scan()
	n, _ := strconv.Atoi(scanner.Text())
	y := make([]int, n)
	for i := 0; i < n; i++ {
		scanner.Scan()
		temp, _ := strconv.Atoi(scanner.Text())
		y[i] = temp
	}
	possibles := make([][]int, n)
	for i := 0; i < n; i++ {
		yi := y[i]
		s := fmt.Sprintf("%04d", yi)
		set := make(map[int]struct{})
		if yi <= 2011 {
			set[yi] = struct{}{}
		}
		for pos := 0; pos < 4; pos++ {
			orig_d := int(s[pos] - '0')
			for d := 0; d <= 9; d++ {
				if d == orig_d {
					continue
				}
				if pos == 0 && d == 0 {
					continue
				}
				news := []byte(s)
				news[pos] = byte('0' + d)
				z, _ := strconv.Atoi(string(news))
				if z >= 1000 && z <= 2011 {
					set[z] = struct{}{}
				}
			}
		}
		var poss []int
		for k := range set {
			poss = append(poss, k)
		}
		sort.Ints(poss)
		possibles[i] = poss
	}
	chosen := make([]int, n)
	prev := 0
	solved := true
	for i := 0; i < n; i++ {
		poss := possibles[i]
		if len(poss) == 0 {
			solved = false
			break
		}
		idx := sort.SearchInts(poss, prev)
		if idx >= len(poss) {
			solved = false
			break
		}
		chosen[i] = poss[idx]
		prev = chosen[i]
	}
	if !solved {
		fmt.Println("No solution")
	} else {
		for _, z := range chosen {
			fmt.Println(z)
		}
	}
}
```