package main
import (
"bufio"
"io"
"os"
"strconv"
)
const MOD int64 = 1000000007
const MAXN = 400005
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
val := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int(data[idx]-'0')
idx++
}
return val
}
inv := make([]int64, MAXN+1)
inv[1] = 1
for i := 2; i <= MAXN; i++ {
inv[i] = MOD - (MOD/int64(i))*inv[int(MOD%int64(i))]%MOD
}
inv2 := inv[2]
t := nextInt()
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
for ; t > 0; t-- {
n := nextInt()
k := nextInt()
var sumTotal, sumSpecial int64
for i := 0; i < n; i++ {
v := int64(nextInt())
sumTotal += v
if i < k {
sumSpecial += v
}
}
m := n - k
total := sumTotal % MOD
special := sumSpecial % MOD
alice := total * inv2 % MOD
if m%2 == 0 {
alice = (alice + special*inv2%MOD*inv[m+1]%MOD) % MOD
} else {
normal := (sumTotal - sumSpecial) % MOD
if normal < 0 {
normal += MOD
}
alice = (alice + normal*inv2%MOD*inv[m]%MOD) % MOD
}
bob := total - alice
if bob < 0 {
bob += MOD
}
out.WriteString(strconv.FormatInt(alice, 10))
out.WriteByte(' ')
out.WriteString(strconv.FormatInt(bob, 10))
out.WriteByte('\n')
}
}