package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
if _, err := fmt.Fscan(reader, &t); err != nil {
return
}
for i := 0; i < t; i++ {
var n int
fmt.Fscan(reader, &n)
p := make([]int, n+1)
pInv := make([]int, n+1)
for j := 1; j <= n; j++ {
fmt.Fscan(reader, &p[j])
pInv[p[j]] = j
}
parent := make([]int, n+1)
for j := 1; j <= n; j++ {
parent[j] = j
}
var find func(int) int
find = func(x int) int {
if parent[x] != x {
parent[x] = find(parent[x])
}
return parent[x]
}
union := func(x, y int) bool {
rootX := find(x)
rootY := find(y)
if rootX != rootY {
parent[rootX] = rootY
return true
}
return false
}
for j := 1; j <= n; j++ {
union(j, p[j])
}
T := make([]int, n+1)
for j := 1; j <= n; j++ {
T[j] = j
}
for j := 1; j < n; j++ {
if find(j) != find(j+1) {
union(j, j+1)
T[j], T[j+1] = T[j+1], T[j]
}
}
succ := make([]int, n+1)
for j := 1; j <= n; j++ {
succ[j] = pInv[T[j]]
}
curr := 1
for j := 1; j <= n; j++ {
if j > 1 {
fmt.Fprint(writer, " ")
}
fmt.Fprint(writer, curr)
curr = succ[curr]
}
fmt.Fprintln(writer)
}
}