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

import (
	"bufio"
	"fmt"
	"math/big"
	"os"
)

func main() {
	var s string
	if _, err := fmt.Scan(&s); err != nil {
		return
	}

	A := new(big.Int)
	if _, ok := A.SetString(s, 10); !ok {
		return
	}

	base12 := A.Text(12)

	valid := false
	var x, y int

	if len(base12) > 0 && base12[0] == '2' {
		allZeros := true
		for i := 1; i < len(base12); i++ {
			if base12[i] != '0' {
				allZeros = false
				break
			}
		}
		if allZeros {
			valid = true
			x = len(base12) - 1
			y = x
		}
	} else if len(base12) > 0 && base12[0] == '1' {
		count1 := 0
		last1 := -1
		allZerosOtherwise := true
		for i := 0; i < len(base12); i++ {
			if base12[i] == '1' {
				count1++
				last1 = i
			} else if base12[i] != '0' {
				allZerosOtherwise = false
				break
			}
		}
		if allZerosOtherwise && count1 == 2 {
			valid = true
			x = len(base12) - 1
			y = len(base12) - 1 - last1
		}
	}

	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	if !valid {
		fmt.Fprintln(writer, "NO")
		return
	}

	fmt.Fprintln(writer, "YES")
	n := x + y + 1
	fmt.Fprintln(writer, 1)
	fmt.Fprintln(writer, n)

	p := (n - 1) / 2
	printP := p
	if printP > 1000 {
		printP = 1000
	}
	fmt.Fprintln(writer, printP)

	if printP > 0 {
		twelve := big.NewInt(12)
		pows := make([]*big.Int, n)
		pows[0] = big.NewInt(1)
		for i := 1; i < n; i++ {
			pows[i] = new(big.Int).Mul(pows[i-1], twelve)
		}

		count := 0
		for a := n / 2; a <= n-1; a++ {
			b := n - 1 - a
			if a == x && b == y {
				continue
			}

			variant := new(big.Int).Add(pows[a], pows[b])
			fmt.Fprintln(writer, variant.String())

			count++
			if count == 1000 {
				break
			}
		}
	}
}
```