package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
readInt := func() int {
scanner.Scan()
val, _ := strconv.Atoi(scanner.Text())
return val
}
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
a := make([]int, n+1)
for i := 1; i <= n; i++ {
a[i] = readInt()
}
w := make([][]int, n+1)
for i := 1; i <= n; i++ {
w[i] = make([]int, n-i+2)
for k := 1; k <= n-i+1; k++ {
w[i][k] = readInt()
}
}
flat := make([]int, 52*52*52*52)
dp := make([][][][]int, 52)
for i := range dp {
dp[i] = make([][][]int, 52)
for j := range dp[i] {
dp[i][j] = make([][]int, 52)
for k := range dp[i][j] {
dp[i][j][k] = flat[(((i*52+j)*52)+k)*52 : (((i*52+j)*52)+k+1)*52]
}
}
}
for k := 1; k <= n; k++ {
dp[1][k][k][k] = a[k]
}
for i := 2; i <= n; i++ {
for k := 1; k <= n-i+1; k++ {
for len_ := 1; len_ <= i; len_++ {
for L := k; L <= k+i-1-len_+1; L++ {
R := L + len_ - 1
val := 0
if R <= k+i-2 {
if dp[i-1][k][L][R] >= w[i-1][k] {
if dp[i-1][k][L][R] > val {
val = dp[i-1][k][L][R]
}
}
}
if L >= k+1 {
if dp[i-1][k+1][L][R] >= w[i-1][k+1] {
if dp[i-1][k+1][L][R] > val {
val = dp[i-1][k+1][L][R]
}
}
}
for mid := L; mid < R; mid++ {
m1 := dp[i-1][k][L][mid]
m2 := dp[i-1][k+1][mid+1][R]
if m1 >= w[i-1][k] && m2 >= w[i-1][k+1] {
if m1+m2 > val {
val = m1 + m2
}
}
}
if L < R {
if dp[i][k][L+1][R] > val {
val = dp[i][k][L+1][R]
}
if dp[i][k][L][R-1] > val {
val = dp[i][k][L][R-1]
}
}
dp[i][k][L][R] = val
}
}
}
}
if dp[n][1][1][n] >= w[n][1] {
fmt.Println("Cerealguy")
} else {
fmt.Println("Fat Rat")
}
}