← Home
```go
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
	fmt.Fscan(in, &t)
	for ; t > 0; t-- {
		var n, m int
		fmt.Fscan(in, &n, &m)

		a := make([][]int, n)
		for i := 0; i < n; i++ {
			a[i] = make([]int, m)
			for j := 0; j < m; j++ {
				fmt.Fscan(in, &a[i][j])
			}
			sort.Ints(a[i])
		}

		type pair struct{ val, idx int }
		first := make([]pair, n)
		for i := 0; i < n; i++ {
			first[i] = pair{a[i][0], i}
		}
		sort.Slice(first, func(i, j int) bool { return first[i].val < first[j].val })

		p := make([]int, n)
		for i := 0; i < n; i++ {
			p[i] = first[i].idx
		}

		ok := true
		top := -1
		for r := 0; r < m && ok; r++ {
			for i := 0; i < n; i++ {
				c := p[i]
				v := a[c][r]
				if v <= top {
					ok = false
					break
				}
				top = v
			}
		}

		if !ok {
			fmt.Fprintln(out, -1)
			continue
		}
		for i := 0; i < n; i++ {
			if i > 0 {
				fmt.Fprint(out, " ")
			}
			fmt.Fprint(out, p[i]+1)
		}
		fmt.Fprintln(out)
	}
}
```