```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)
}
}
```