← Home
For problem statement at 1000-1999/1500-1599/1550-1559/1553/problemF.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1550-1559/1553/verifierF.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"os"
	"strconv"
)

func readInt(reader *bufio.Reader) int {
	var n int
	var c byte
	var err error
	for {
		c, err = reader.ReadByte()
		if err != nil || (c >= '0' && c <= '9') {
			break
		}
	}
	if err != nil {
		return 0
	}
	for {
		n = n*10 + int(c-'0')
		c, err = reader.ReadByte()
		if err != nil || c < '0' || c > '9' {
			break
		}
	}
	return n
}

func main() {
	reader := bufio.NewReaderSize(os.Stdin, 65536)
	writer := bufio.NewWriterSize(os.Stdout, 65536)
	defer writer.Flush()

	n := readInt(reader)
	if n == 0 {
		return
	}

	a := make([]int, n)
	maxA := 0
	for i := 0; i < n; i++ {
		a[i] = readInt(reader)
		if a[i] > maxA {
			maxA = a[i]
		}
	}

	M := maxA
	bit1 := make([]int64, M+2)
	bit2 := make([]int32, M+2)

	add1 := func(idx int, val int64) {
		for i := idx; i <= M; i += i & -i {
			bit1[i] += val
		}
	}

	query1 := func(idx int) int64 {
		sum := int64(0)
		for i := idx; i > 0; i -= i & -i {
			sum += bit1[i]
		}
		return sum
	}

	add2 := func(idx int, val int32) {
		for i := idx; i <= M; i += i & -i {
			bit2[i] += val
		}
	}

	query2 := func(idx int) int32 {
		sum := int32(0)
		for i := idx; i > 0; i -= i & -i {
			sum += bit2[i]
		}
		return sum
	}

	var S int64 = 0
	var pk int64 = 0

	for k := 1; k <= n; k++ {
		ak := a[k-1]

		sum1 := query1(ak)
		part1 := int64(k-1)*int64(ak) - sum1

		sum2 := int64(0)
		for c := 1; c*ak <= M; c++ {
			L := c * ak
			R := (c + 1) * ak - 1
			if R > M {
				R = M
			}
			cnt := query2(R) - query2(L-1)
			sum2 += int64(c) * int64(cnt)
		}
		part2 := S - sum2*int64(ak)

		pk += part1 + part2

		writer.WriteString(strconv.FormatInt(pk, 10))
		writer.WriteByte(' ')

		S += int64(ak)

		for c := 1; c*ak <= M; c++ {
			L := c * ak
			R := (c + 1) * ak - 1
			if R > M {
				R = M
			}
			add1(L, int64(c*ak))
			add1(R+1, -int64(c*ak))
		}
		add2(ak, 1)
	}
	writer.WriteByte('\n')
}
```