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)
}
}