import sys

sys.setrecursionlimit(1000000)



N = int(eval(input()))



G = {k: [] for k in range(N+1)}

for _ in range(N-1):

    a, b = list(map(int, input().split()))

    # 無向グラフ

    G[a].append(b)

    G[b].append(a)





def dfs(v, p, c, distance):  # 現在の頂点v, vの親p, 現在の距離c

    distance[v] = c

    for nv in G[v]:

        if visited[nv] is False:

            if nv == p:

                continue

            dfs(nv, v, c+1, distance)

    return





distance_f = [-1]*(N+1)

visited = [False] * (N+1)

dfs(1, -1, 0, distance_f)



distance_s = [-1]*(N+1)

visited = [False] * (N+1)

dfs(N, -1, 0, distance_s)



# print(distance_f)

# print(distance_s)



c = 0

for i in range(2, N):

    if distance_f[i] <= distance_s[i]:

        c += 1

    elif distance_f[i] > distance_s[i]:

        c -= 1



if c > 0:

    print('Fennec')

elif c <= 0:

    print('Snuke')

from collections import deque

N = int(eval(input()))



G = {k: [] for k in range(N)}

for _ in range(N-1):

    a, b = list(map(int, input().split()))

    # 無向グラフ

    G[a-1].append(b-1)

    G[b-1].append(a-1)





def bfs(i):

    visited = [-1 for _ in range(N)]

    visited[i] = 0

    que = deque([(i, 0)])



    while que:

        ci, d = que.popleft()



        for ni in G[ci]:

            if visited[ni] == -1:

                visited[ni] = d+1

                que.append((ni, d+1))



    return visited





F = bfs(0)

S = bfs(N-1)





ans = 0

for i in range(N):

    if F[i] <= S[i]:

        ans += 1

    else:

        ans -= 1

if ans > 0:

    print('Fennec')

else:

    print('Snuke')

import sys

sys.setrecursionlimit(1000000)
N = int(eval(input()))
G = {k: [] for k in range(N + 1)}
for _ in range(N - 1):
    a, b = list(map(int, input().split()))
    # 無向グラフ
    G[a].append(b)
    G[b].append(a)


def dfs(v, p, c, distance):  # 現在の頂点v, vの親p, 現在の距離c
    distance[v] = c
    for nv in G[v]:
        if visited[nv] is False:
            if nv == p:
                continue
            dfs(nv, v, c + 1, distance)
    return


distance_f = [-1] * (N + 1)
visited = [False] * (N + 1)
dfs(1, -1, 0, distance_f)
distance_s = [-1] * (N + 1)
visited = [False] * (N + 1)
dfs(N, -1, 0, distance_s)
# print(distance_f)
# print(distance_s)
c = 0
for i in range(2, N):
    if distance_f[i] <= distance_s[i]:
        c += 1
    elif distance_f[i] > distance_s[i]:
        c -= 1
if c > 0:
    print("Fennec")
elif c <= 0:
    print("Snuke")

from collections import deque

N = int(eval(input()))
G = {k: [] for k in range(N)}
for _ in range(N - 1):
    a, b = list(map(int, input().split()))
    # 無向グラフ
    G[a - 1].append(b - 1)
    G[b - 1].append(a - 1)


def bfs(i):
    visited = [-1 for _ in range(N)]
    visited[i] = 0
    que = deque([(i, 0)])
    while que:
        ci, d = que.popleft()
        for ni in G[ci]:
            if visited[ni] == -1:
                visited[ni] = d + 1
                que.append((ni, d + 1))
    return visited


F = bfs(0)
S = bfs(N - 1)
ans = 0
for i in range(N):
    if F[i] <= S[i]:
        ans += 1
    else:
        ans -= 1
if ans > 0:
    print("Fennec")
else:
    print("Snuke")

-import sys +from collections import deque -sys.setrecursionlimit(1000000) -G = {k: [] for k in range(N + 1)} +G = {k: [] for k in range(N)} -    G[a].append(b) -    G[b].append(a) +    G[a - 1].append(b - 1) +    G[b - 1].append(a - 1) -def dfs(v, p, c, distance):  # 現在の頂点v, vの親p, 現在の距離c -    distance[v] = c -    for nv in G[v]: -        if visited[nv] is False: -            if nv == p: -                continue -            dfs(nv, v, c + 1, distance) -    return +def bfs(i): +    visited = [-1 for _ in range(N)] +    visited[i] = 0 +    que = deque([(i, 0)]) +    while que: +        ci, d = que.popleft() +        for ni in G[ci]: +            if visited[ni] == -1: +                visited[ni] = d + 1 +                que.append((ni, d + 1)) +    return visited -distance_f = [-1] * (N + 1) -visited = [False] * (N + 1) -dfs(1, -1, 0, distance_f) -distance_s = [-1] * (N + 1) -visited = [False] * (N + 1) -dfs(N, -1, 0, distance_s) -# print(distance_f) -# print(distance_s) -c = 0 -for i in range(2, N): -    if distance_f[i] <= distance_s[i]: -        c += 1 -    elif distance_f[i] > distance_s[i]: -        c -= 1 -if c > 0: +F = bfs(0) +S = bfs(N - 1) +ans = 0 +for i in range(N): +    if F[i] <= S[i]: +        ans += 1 +    else: +        ans -= 1 +if ans > 0: -elif c <= 0: +else: