← Home
package main

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

type int64s []int64

func (a int64s) Len() int           { return len(a) }
func (a int64s) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
func (a int64s) Less(i, j int) bool { return a[i] < a[j] }

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

	var t int
	if _, err := fmt.Fscan(in, &t); err != nil {
		return
	}

	for i := 0; i < t; i++ {
		var n, m, k int64
		fmt.Fscan(in, &n, &m, &k)

		a := make(int64s, n)
		for j := int64(0); j < n; j++ {
			fmt.Fscan(in, &a[j])
		}

		sort.Sort(a)

		q := k / m
		r := k % m

		var totalCost int64 = k * (k - 1) / 2

		for j := int64(0); j < q; j++ {
			totalCost += m*a[j] - m*(m-1)/2
		}
		if r > 0 {
			totalCost += r*a[q] - r*(r-1)/2
		}

		fmt.Fprintln(out, totalCost)
	}
}