N = int(eval(input()))

edges = [[] for _ in range(N)]

for _ in range(N-1):

    s,t = [int(x)-1 for x in input().split()]

    edges[s].append(t)

    edges[t].append(s)



from collections import deque

def bfs(edges, s)->list:

    V = len(edges)

    dist = [float('inf')]*V

    visited = [False]*V

    dist[s] = 0

    visited[s] = True

    q = deque([s])

    while q:

        cur = q.popleft()

        for nex in edges[cur]:

            if visited[nex]:

                continue

            q.append(nex)

            visited[nex] = True

            dist[nex] = dist[cur] + 1

    return dist



dist1 = bfs(edges, 0)

dist2 = bfs(edges, N-1)

score1 = 0

for d1,d2 in zip(dist1, dist2):

    if d1 <= d2:

        score1 += 1

# print(score1)

print(("Fennec" if score1 > N/2 else "Snuke"))

import sys

from collections import deque

readline = sys.stdin.readline



N = int(readline())

edges = [[] for _ in range(N)]

for _ in range(N-1):

    s,t = [int(x)-1 for x in readline().split()]

    edges[s].append(t)

    edges[t].append(s)



def bfs(edges, s)->list:

    V = len(edges)

    dist = [float('inf')]*V

    visited = [False]*V

    dist[s] = 0

    visited[s] = True

    q = deque([s])

    while q:

        cur = q.popleft()

        for nex in edges[cur]:

            if visited[nex]:

                continue

            q.append(nex)

            visited[nex] = True

            dist[nex] = dist[cur] + 1

    return dist



dist1 = bfs(edges, 0)

dist2 = bfs(edges, N-1)

score1 = 0

for d1,d2 in zip(dist1, dist2):

    if d1 <= d2:

        score1 += 1

# print(score1)

print(("Fennec" if score1 > N/2 else "Snuke"))

N = int(eval(input()))
edges = [[] for _ in range(N)]
for _ in range(N - 1):
    s, t = [int(x) - 1 for x in input().split()]
    edges[s].append(t)
    edges[t].append(s)
from collections import deque


def bfs(edges, s) -> list:
    V = len(edges)
    dist = [float("inf")] * V
    visited = [False] * V
    dist[s] = 0
    visited[s] = True
    q = deque([s])
    while q:
        cur = q.popleft()
        for nex in edges[cur]:
            if visited[nex]:
                continue
            q.append(nex)
            visited[nex] = True
            dist[nex] = dist[cur] + 1
    return dist


dist1 = bfs(edges, 0)
dist2 = bfs(edges, N - 1)
score1 = 0
for d1, d2 in zip(dist1, dist2):
    if d1 <= d2:
        score1 += 1
# print(score1)
print(("Fennec" if score1 > N / 2 else "Snuke"))

import sys
from collections import deque

readline = sys.stdin.readline
N = int(readline())
edges = [[] for _ in range(N)]
for _ in range(N - 1):
    s, t = [int(x) - 1 for x in readline().split()]
    edges[s].append(t)
    edges[t].append(s)


def bfs(edges, s) -> list:
    V = len(edges)
    dist = [float("inf")] * V
    visited = [False] * V
    dist[s] = 0
    visited[s] = True
    q = deque([s])
    while q:
        cur = q.popleft()
        for nex in edges[cur]:
            if visited[nex]:
                continue
            q.append(nex)
            visited[nex] = True
            dist[nex] = dist[cur] + 1
    return dist


dist1 = bfs(edges, 0)
dist2 = bfs(edges, N - 1)
score1 = 0
for d1, d2 in zip(dist1, dist2):
    if d1 <= d2:
        score1 += 1
# print(score1)
print(("Fennec" if score1 > N / 2 else "Snuke"))

-N = int(eval(input())) +import sys +from collections import deque + +readline = sys.stdin.readline +N = int(readline()) -    s, t = [int(x) - 1 for x in input().split()] +    s, t = [int(x) - 1 for x in readline().split()] -from collections import deque