package main
import (
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt64 := func() int64 {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') && data[idx] != '-' {
idx++
}
sign := int64(1)
if data[idx] == '-' {
sign = -1
idx++
}
var v int64
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
v = v*10 + int64(data[idx]-'0')
idx++
}
return v * sign
}
t := int(nextInt64())
out := make([]byte, 0, 1<<20)
for ; t > 0; t-- {
n := int(nextInt64())
a := make([]int, n+1)
var prev int64
label := 1
for i := 1; i <= n; i++ {
bi := nextInt64()
d := bi - prev
p := i - int(d)
if p == 0 {
a[i] = label
label++
} else {
a[i] = a[p]
}
prev = bi
}
for i := 1; i <= n; i++ {
out = strconv.AppendInt(out, int64(a[i]), 10)
if i == n {
out = append(out, '\n')
} else {
out = append(out, ' ')
}
}
}
os.Stdout.Write(out)
}