← Home
```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, &times[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)
	}
}
```