import queue



N = int(eval(input()))

ab = [list(map(int, input().split())) for _ in range(N - 1)]



T = {}

for a, b in ab:

  if a not in T:

    T[a] = [b]

  else:

    T[a].append(b)

  if b not in T:

    T[b] = [a]

  else:

    T[b].append(a)



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

q = queue.Queue()

put = q.put

get = q.get

put(1)

R[1] = 1

while not q.empty(): 

  t = get()

  if t in T:

    for i in T[t]:

      if R[i] == -1:

        R[i] = R[t] + 1

        put(i)



L = [N]

t = N

while t != 1:

  for i in T[t]:

    if R[i] < R[t]:

      L.append(i)

      t = i

      break



k = L[len(L) // 2 - 1]



cnt = 1

put(k)

while not q.empty(): 

  t = get()

  if t in T:

    for i in T[t]:

      if R[i] > R[t]:

        cnt += 1

        put(i)



Ans = ["Fennec", "Snuke"]

print((Ans[cnt >= N - cnt]))



import bisect

from operator import itemgetter

import math

import copy

import functools

import itertools

import numpy as np

import sys

MAX_INT = int(10e10)

MIN_INT = -MAX_INT

mod = 1000000007

sys.setrecursionlimit(1000000)

def IL(): return list(map(int,input().split()))

def SL(): return input().split()

def I(): return int(sys.stdin.readline())

def S(): return eval(input())



def tami(x):

    if visited[x] == False:

        visited[x] = True

        path.append(x)

        if x == N:

            return True

        for i in root[x]:

            if tami(i):

                return True

        else:

            del path[-1]

    return False



def nas(x):

    global cnt

    if (visited[x] == False) and (data[x] == 0):

        visited[x] = True

        cnt += 1

        for i in root[x]:

            nas(i)



N = I()

ab = [IL() for i in range(N-1)]

data = np.array([0]*(N+1))

root = [[]*(N+1) for i in range(N+1)]

visited = [False]*(N+1)



path = []

f = 0

for a,b in ab:

    root[a].append(b)

    root[b].append(a)



tami(1)

middle_No = path[math.ceil(len(path)/2)-1]

data[middle_No] = 1



visited = [False]*(N+1)

cnt = 0

nas(N)



Snuke = cnt

Fennec = N - Snuke



if Fennec > Snuke:

    print("Fennec")

else:

    print("Snuke")

import queue

N = int(eval(input()))
ab = [list(map(int, input().split())) for _ in range(N - 1)]
T = {}
for a, b in ab:
    if a not in T:
        T[a] = [b]
    else:
        T[a].append(b)
    if b not in T:
        T[b] = [a]
    else:
        T[b].append(a)
R = [-1] * (N + 1)
q = queue.Queue()
put = q.put
get = q.get
put(1)
R[1] = 1
while not q.empty():
    t = get()
    if t in T:
        for i in T[t]:
            if R[i] == -1:
                R[i] = R[t] + 1
                put(i)
L = [N]
t = N
while t != 1:
    for i in T[t]:
        if R[i] < R[t]:
            L.append(i)
            t = i
            break
k = L[len(L) // 2 - 1]
cnt = 1
put(k)
while not q.empty():
    t = get()
    if t in T:
        for i in T[t]:
            if R[i] > R[t]:
                cnt += 1
                put(i)
Ans = ["Fennec", "Snuke"]
print((Ans[cnt >= N - cnt]))

import bisect
from operator import itemgetter
import math
import copy
import functools
import itertools
import numpy as np
import sys

MAX_INT = int(10e10)
MIN_INT = -MAX_INT
mod = 1000000007
sys.setrecursionlimit(1000000)


def IL():
    return list(map(int, input().split()))


def SL():
    return input().split()


def I():
    return int(sys.stdin.readline())


def S():
    return eval(input())


def tami(x):
    if visited[x] == False:
        visited[x] = True
        path.append(x)
        if x == N:
            return True
        for i in root[x]:
            if tami(i):
                return True
        else:
            del path[-1]
    return False


def nas(x):
    global cnt
    if (visited[x] == False) and (data[x] == 0):
        visited[x] = True
        cnt += 1
        for i in root[x]:
            nas(i)


N = I()
ab = [IL() for i in range(N - 1)]
data = np.array([0] * (N + 1))
root = [[] * (N + 1) for i in range(N + 1)]
visited = [False] * (N + 1)
path = []
f = 0
for a, b in ab:
    root[a].append(b)
    root[b].append(a)
tami(1)
middle_No = path[math.ceil(len(path) / 2) - 1]
data[middle_No] = 1
visited = [False] * (N + 1)
cnt = 0
nas(N)
Snuke = cnt
Fennec = N - Snuke
if Fennec > Snuke:
    print("Fennec")
else:
    print("Snuke")

-import queue +import bisect +from operator import itemgetter +import math +import copy +import functools +import itertools +import numpy as np +import sys -N = int(eval(input())) -ab = [list(map(int, input().split())) for _ in range(N - 1)] -T = {} +MAX_INT = int(10e10) +MIN_INT = -MAX_INT +mod = 1000000007 +sys.setrecursionlimit(1000000) + + +def IL(): +    return list(map(int, input().split())) + + +def SL(): +    return input().split() + + +def I(): +    return int(sys.stdin.readline()) + + +def S(): +    return eval(input()) + + +def tami(x): +    if visited[x] == False: +        visited[x] = True +        path.append(x) +        if x == N: +            return True +        for i in root[x]: +            if tami(i): +                return True +        else: +            del path[-1] +    return False + + +def nas(x): +    global cnt +    if (visited[x] == False) and (data[x] == 0): +        visited[x] = True +        cnt += 1 +        for i in root[x]: +            nas(i) + + +N = I() +ab = [IL() for i in range(N - 1)] +data = np.array([0] * (N + 1)) +root = [[] * (N + 1) for i in range(N + 1)] +visited = [False] * (N + 1) +path = [] +f = 0 -    if a not in T: -        T[a] = [b] -    else: -        T[a].append(b) -    if b not in T: -        T[b] = [a] -    else: -        T[b].append(a) -R = [-1] * (N + 1) -q = queue.Queue() -put = q.put -get = q.get -put(1) -R[1] = 1 -while not q.empty(): -    t = get() -    if t in T: -        for i in T[t]: -            if R[i] == -1: -                R[i] = R[t] + 1 -                put(i) -L = [N] -t = N -while t != 1: -    for i in T[t]: -        if R[i] < R[t]: -            L.append(i) -            t = i -            break -k = L[len(L) // 2 - 1] -cnt = 1 -put(k) -while not q.empty(): -    t = get() -    if t in T: -        for i in T[t]: -            if R[i] > R[t]: -                cnt += 1 -                put(i) -Ans = ["Fennec", "Snuke"] -print((Ans[cnt >= N - cnt])) +    root[a].append(b) +    root[b].append(a) +tami(1) +middle_No = path[math.ceil(len(path) / 2) - 1] +data[middle_No] = 1 +visited = [False] * (N + 1) +cnt = 0 +nas(N) +Snuke = cnt +Fennec = N - Snuke +if Fennec > Snuke: +    print("Fennec") +else: +    print("Snuke")