← Home
For problem statement at 1000-1999/1100-1199/1160-1169/1166/problemD.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1160-1169/1166/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main

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

func cappedMul(a, b, capv int64) int64 {
	if a == 0 || b == 0 {
		return 0
	}
	if a > (capv+1)/b {
		return capv + 1
	}
	return a * b
}

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

	var q int
	if _, err := fmt.Fscan(in, &q); err != nil {
		return
	}
	for ; q > 0; q-- {
		var a, b, m int64
		fmt.Fscan(in, &a, &b, &m)
		if a == b {
			fmt.Fprintf(out, "1 %d\n", a)
			continue
		}
		found := false
		var k int
		var p int64
		for k = 2; k <= 50; k++ {
			p = int64(1) << uint(k-2)
			minC := cappedMul(p, a+1, b)
			if minC > b {
				break
			}
			maxC := cappedMul(p, a+m, b)
			if maxC < b {
				continue
			}
			found = true
			break
		}
		if !found {
			fmt.Fprintln(out, -1)
			continue
		}
		minExact := p * (a + 1)
		rem := b - minExact

		r := make([]int64, k+1)
		for i := 2; i <= k; i++ {
			var w int64
			if i == k {
				w = 1
			} else {
				w = int64(1) << uint(k-1-i)
			}
			d := rem / w
			if d > m-1 {
				d = m - 1
			}
			r[i] = 1 + d
			rem -= d * w
		}

		ans := make([]int64, k)
		ans[0] = a
		sum := a
		for i := 2; i <= k; i++ {
			x := sum + r[i]
			ans[i-1] = x
			sum += x
		}

		fmt.Fprintf(out, "%d", k)
		for i := 0; i < k; i++ {
			fmt.Fprintf(out, " %d", ans[i])
		}
		fmt.Fprintln(out)
	}
}
```