import numpy as np

from collections import deque



N = int(eval(input()))

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

for _ in range(N-1):

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

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

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



# BFS

def dist_from_X(X:int):

    dist = np.full(N, -1)

    que = deque([X])

    dist[X] = 0

    while que:

        v = que.popleft()

        d = dist[v]

        for e in E[v]:

            if dist[e] > -1:

                continue

            dist[e] = d + 1

            que.append(e)

    return dist



Fennec = dist_from_X(0)

Sunuke = dist_from_X(N-1)



cnt = np.count_nonzero(Fennec <= Sunuke)



if cnt > N - cnt:

    print("Fennec")

else:

    print("Snuke")
from collections import deque



N = int(eval(input()))

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

for _ in range(N - 1):

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

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

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



def dist_from_X(X:int):

    """ BFSで距離を求める """

    dist = [-1] * N

    que = deque([X])

    dist[X] = 0

    while que:

        v = que.popleft()

        for w in edge[v]:

            if dist[w] < 0:

                dist[w] = dist[v] + 1

                que.append(w)

    return dist



Fennec = dist_from_X(0)

Snuke = dist_from_X(N - 1)



# 距離同じ -> Fennec

cntF, cntS = 0,0

for f,s in zip(Fennec, Snuke):

    if f <= s:

        cntF += 1

    else:

        cntS += 1



# cntが同じ -> Snuke

if cntF > cntS:

    print("Fennec")

else:

    print("Snuke")
import numpy as np
from collections import deque

N = int(eval(input()))
E = [[] for _ in range(N)]
for _ in range(N - 1):
    a, b = list(map(int, input().split()))
    E[a - 1].append(b - 1)
    E[b - 1].append(a - 1)
# BFS
def dist_from_X(X: int):
    dist = np.full(N, -1)
    que = deque([X])
    dist[X] = 0
    while que:
        v = que.popleft()
        d = dist[v]
        for e in E[v]:
            if dist[e] > -1:
                continue
            dist[e] = d + 1
            que.append(e)
    return dist


Fennec = dist_from_X(0)
Sunuke = dist_from_X(N - 1)
cnt = np.count_nonzero(Fennec <= Sunuke)
if cnt > N - cnt:
    print("Fennec")
else:
    print("Snuke")

from collections import deque

N = int(eval(input()))
edge = [[] for _ in range(N)]
for _ in range(N - 1):
    a, b = list(map(int, input().split()))
    edge[a - 1].append(b - 1)
    edge[b - 1].append(a - 1)


def dist_from_X(X: int):
    """BFSで距離を求める"""
    dist = [-1] * N
    que = deque([X])
    dist[X] = 0
    while que:
        v = que.popleft()
        for w in edge[v]:
            if dist[w] < 0:
                dist[w] = dist[v] + 1
                que.append(w)
    return dist


Fennec = dist_from_X(0)
Snuke = dist_from_X(N - 1)
# 距離同じ -> Fennec
cntF, cntS = 0, 0
for f, s in zip(Fennec, Snuke):
    if f <= s:
        cntF += 1
    else:
        cntS += 1
# cntが同じ -> Snuke
if cntF > cntS:
    print("Fennec")
else:
    print("Snuke")

-import numpy as np -E = [[] for _ in range(N)] +edge = [[] for _ in range(N)] -    E[a - 1].append(b - 1) -    E[b - 1].append(a - 1) -# BFS +    edge[a - 1].append(b - 1) +    edge[b - 1].append(a - 1) + + -    dist = np.full(N, -1) +    """BFSで距離を求める""" +    dist = [-1] * N -        d = dist[v] -        for e in E[v]: -            if dist[e] > -1: -                continue -            dist[e] = d + 1 -            que.append(e) +        for w in edge[v]: +            if dist[w] < 0: +                dist[w] = dist[v] + 1 +                que.append(w) -Sunuke = dist_from_X(N - 1) -cnt = np.count_nonzero(Fennec <= Sunuke) -if cnt > N - cnt: +Snuke = dist_from_X(N - 1) +# 距離同じ -> Fennec +cntF, cntS = 0, 0 +for f, s in zip(Fennec, Snuke): +    if f <= s: +        cntF += 1 +    else: +        cntS += 1 +# cntが同じ -> Snuke +if cntF > cntS: