package main
import (
"bytes"
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') && data[idx] != '-' {
idx++
}
sign := 1
if data[idx] == '-' {
sign = -1
idx++
}
val := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int(data[idx]-'0')
idx++
}
return sign * val
}
t := nextInt()
var out bytes.Buffer
for ; t > 0; t-- {
n := nextInt()
g := make([][]int, n)
for i := 0; i < n-1; i++ {
u := nextInt() - 1
v := nextInt() - 1
g[u] = append(g[u], v)
g[v] = append(g[v], u)
}
color := make([]int, n)
for i := range color {
color[i] = -1
}
stack := []int{0}
color[0] = 0
for len(stack) > 0 {
v := stack[len(stack)-1]
stack = stack[:len(stack)-1]
for _, to := range g[v] {
if color[to] == -1 {
color[to] = color[v] ^ 1
stack = append(stack, to)
}
}
}
for i := 0; i < n; i++ {
if i > 0 {
out.WriteByte(' ')
}
val := len(g[i])
if color[i] == 1 {
val = -val
}
out.WriteString(strconv.Itoa(val))
}
out.WriteByte('\n')
}
os.Stdout.Write(out.Bytes())
}