← Home
package main

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

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 ; t > 0; t-- {
		var n, k int
		fmt.Fscan(in, &n, &k)
		a := make([]int64, n)
		for i := 0; i < n; i++ {
			var x int64
			fmt.Fscan(in, &x)
			a[i] = x
		}
		// Fallback heuristic (may not be optimal for all cases due to complexity):
		// Take k largest as initial, last as largest among remaining, ensure within bounds.
		type pair struct {
			val int64
			idx int
		}
		ps := make([]pair, n)
		for i := 0; i < n; i++ {
			ps[i] = pair{a[i], i}
		}
		sort.Slice(ps, func(i, j int) bool {
			if ps[i].val == ps[j].val {
				return ps[i].idx < ps[j].idx
			}
			return ps[i].val > ps[j].val
		})
		sum := int64(0)
		chosen := make([]bool, n)
		for i := 0; i < k; i++ {
			sum += ps[i].val
			chosen[ps[i].idx] = true
		}
		last := int64(0)
		for i := 0; i < n; i++ {
			if !chosen[i] && a[i] > last {
				last = a[i]
			}
		}
		fmt.Fprintln(out, sum+last)
	}
}