← Home
For problem statement at 2000-2999/2100-2199/2140-2149/2146/problemD2.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2140-2149/2146/verifierD2.go ends with All 42 tests passed. can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"math/bits"
	"os"
	"strconv"
	"strings"
)

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

	line, _ := reader.ReadString('\n')
	t, _ := strconv.Atoi(strings.TrimSpace(line))

	for i := 0; i < t; i++ {
		line, _ = reader.ReadString('\n')
		parts := strings.Fields(line)
		l, _ := strconv.Atoi(parts[0])
		r, _ := strconv.Atoi(parts[1])
		n := r - l + 1

		maxSum := int64(0)
		for bit := 0; bit < 30; bit++ {
			period := int64(1) << (bit + 1)
			half := int64(1) << bit
			countUpTo := func(x int) int64 {
				if x < 0 {
					return 0
				}
				X := int64(x) + 1
				cycles := X / period
				rem := X % period
				cnt := cycles * half
				if rem > half {
					cnt += rem - half
				}
				return cnt
			}
			cnt := countUpTo(r) - countUpTo(l-1)
			pairs := int64(n)
			if 2*cnt < pairs {
				pairs = 2 * cnt
			}
			maxSum += pairs * half
		}
		fmt.Fprintln(writer, maxSum)

		ans := make([]int, n)
		construct(l, r, ans)
		for j, v := range ans {
			if j > 0 {
				fmt.Fprint(writer, " ")
			}
			fmt.Fprint(writer, v)
		}
		fmt.Fprintln(writer)
	}
}

func construct(l, r int, ans []int) {
	if l == r {
		ans[0] = l
		return
	}
	x := l ^ r
	k := bits.Len32(uint32(x)) - 1
	mask := (1 << k) - 1
	first := (l &^ mask) | (1 << k)
	L := first - l
	R := r - first + 1
	if L <= R {
		combinedLen := 2 * L
		endVal := l + combinedLen - 1
		for i := 0; i < combinedLen; i++ {
			ans[i] = endVal - i
		}
		if combinedLen < len(ans) {
			construct(first+L, r, ans[combinedLen:])
		}
	} else {
		start := first - R
		combinedLen := 2 * R
		offset := start - l
		endVal := start + combinedLen - 1
		for i := 0; i < combinedLen; i++ {
			ans[offset+i] = endVal - i
		}
		if offset > 0 {
			construct(l, start-1, ans[:offset])
		}
	}
}
```