← Home
For problem statement at 0-999/500-599/550-559/551/problemB.txt this is a correct solution, but verifier at 0-999/500-599/550-559/551/verifierB.go ends with All 102 tests passed can you fix the verifier?  ```go
package main

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

func main() {
	reader := bufio.NewReader(os.Stdin)
	a, _ := reader.ReadString('\n')
	b, _ := reader.ReadString('\n')
	c, _ := reader.ReadString('\n')
	
	a = strings.TrimSpace(a)
	b = strings.TrimSpace(b)
	c = strings.TrimSpace(c)

	cntA := [26]int{}
	cntB := [26]int{}
	cntC := [26]int{}

	for _, ch := range a {
		cntA[ch-'a']++
	}
	for _, ch := range b {
		cntB[ch-'a']++
	}
	for _, ch := range c {
		cntC[ch-'a']++
	}

	maxB := len(a)
	for i := 0; i < 26; i++ {
		if cntB[i] > 0 {
			if cntA[i]/cntB[i] < maxB {
				maxB = cntA[i] / cntB[i]
			}
		}
	}

	bestSum := 0
	bestI := 0
	bestJ := 0

	for i := 0; i <= maxB; i++ {
		rem := [26]int{}
		valid := true
		for j := 0; j < 26; j++ {
			rem[j] = cntA[j] - i*cntB[j]
			if rem[j] < 0 {
				valid = false
				break
			}
		}
		if !valid {
			continue
		}

		maxC := len(a)
		for j := 0; j < 26; j++ {
			if cntC[j] > 0 {
				if rem[j]/cntC[j] < maxC {
					maxC = rem[j] / cntC[j]
				}
			}
		}

		if i+maxC > bestSum {
			bestSum = i + maxC
			bestI = i
			bestJ = maxC
		}
	}

	var res strings.Builder
	res.Grow(len(a))
	
	for i := 0; i < bestI; i++ {
		res.WriteString(b)
	}
	for j := 0; j < bestJ; j++ {
		res.WriteString(c)
	}
	
	for i := 0; i < 26; i++ {
		cnt := cntA[i] - bestI*cntB[i] - bestJ*cntC[i]
		for k := 0; k < cnt; k++ {
			res.WriteByte(byte('a' + i))
		}
	}

	fmt.Println(res.String())
}
```