```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
fmt.Fscan(reader, &t)
for ; t > 0; t-- {
var n, m, h int
fmt.Fscan(reader, &n, &m, &h)
type Result struct {
points int
penalty int
}
results := make([]Result, n)
for i := 0; i < n; i++ {
times := make([]int, m)
for j := 0; j < m; j++ {
fmt.Fscan(reader, ×[j])
}
sort.Ints(times)
points := 0
penalty := 0
cumulative := 0
for j := 0; j < m; j++ {
cumulative += times[j]
if cumulative <= h {
points++
penalty += cumulative
} else {
break
}
}
results[i] = Result{points, penalty}
}
rudolfResult := results[0]
place := 1
for i := 1; i < n; i++ {
if results[i].points > rudolfResult.points ||
(results[i].points == rudolfResult.points && results[i].penalty < rudolfResult.penalty) {
place++
}
}
fmt.Fprintln(writer, place)
}
}
```