package main
import (
"fmt"
)
func main() {
var n int
var edge = make(map[int][]int, 0)
mask := make(map[int]struct{})
fmt.Scan(&n)
for i := 1; i < n; i++ {
var a, b int
fmt.Scan(&a, &b)
edge[a] = append(edge[a], b)
edge[b] = append(edge[b], a)
}
matchIndex := 1
match := make([]int, n+1)
var dfs func(root int) bool
dfs = func(root int) bool {
mask[root] = struct{}{}
sameColor := 0
for _, item := range edge[root] {
if _, ok := mask[item]; !ok {
if !dfs(item) {
sameColor = item
}
}
}
delete(mask, root)
if sameColor == 0 {
return false
}
match[root] = matchIndex
match[sameColor] = matchIndex
matchIndex++
return true
}
dfs(1)
success := true
for i := 1; i <= n; i++ {
if match[i] == 0 {
success = false
break
}
}
var colors [100020]rune
var dfs2 func(root int)
dfs2 = func(root int) {
mask[root] = struct{}{}
for _, item := range edge[root] {
if _, ok := mask[item]; !ok {
if match[item] == match[root] {
colors[item] = colors[root]
} else {
colors[item] = 'R' + 'B' - colors[root]
}
dfs2(item)
}
}
}
colors[1] = 'R'
dfs2(1)
if !success {
fmt.Println(-1)
} else {
fmt.Println(string(colors[1:n+1]))
}
}