← Home
For problem statement at 1000-1999/1300-1399/1380-1389/1380/problemG.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1380-1389/1380/verifierG.go ends with All 100 tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"io"
	"os"
	"sort"
	"strconv"
)

const mod int64 = 998244353

func nextInt(data []byte, idx *int) int {
	n := len(data)
	for *idx < n && (data[*idx] < '0' || data[*idx] > '9') {
		*idx++
	}
	val := 0
	for *idx < n && data[*idx] >= '0' && data[*idx] <= '9' {
		val = val*10 + int(data[*idx]-'0')
		*idx++
	}
	return val
}

func modPow(a, e int64) int64 {
	res := int64(1)
	for e > 0 {
		if e&1 == 1 {
			res = res * a % mod
		}
		a = a * a % mod
		e >>= 1
	}
	return res
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	n := nextInt(data, &idx)
	c := make([]int, n)
	for i := 0; i < n; i++ {
		c[i] = nextInt(data, &idx)
	}

	sort.Ints(c)

	pref := make([]int64, n+1)
	for i := 0; i < n; i++ {
		pref[i+1] = pref[i] + int64(c[i])
	}

	invN := modPow(int64(n), mod-2)
	ans := make([]int64, n)

	for k := 1; k <= n; k++ {
		m := n - k
		if m == 0 {
			ans[k-1] = 0
			continue
		}
		var s int64
		right := m
		w := int64(1)
		for right > 0 {
			left := right - k
			if left < 0 {
				left = 0
			}
			s += w * (pref[right] - pref[left])
			right = left
			w++
		}
		ans[k-1] = (s % mod) * invN % mod
	}

	out := make([]byte, 0, n*12)
	for i, v := range ans {
		if i > 0 {
			out = append(out, ' ')
		}
		out = strconv.AppendInt(out, v, 10)
	}
	out = append(out, '\n')

	w := bufio.NewWriterSize(os.Stdout, 1<<20)
	w.Write(out)
	w.Flush()
}
```