N=int(eval(input()))

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

for i in range(N-1):

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

  a,b=a-1,b-1

  E[a].append(b)

  E[b].append(a)



F=[0]*N

S=[0]*N



stack=[]

# 番号、距離、親

stack.append([0,0,-1])

while stack:

  node=stack.pop()

  v=node[0]

  dist=node[1]

  parent=node[2]

  F[v]=dist

  childs=E[v]

  for child in childs:

    if child==parent:

      continue

    stack.append([child,dist+1,v])

  

stack=[]

# 番号、距離、親

stack.append([N-1,0,-1])

while stack:

  node=stack.pop()

  v=node[0]

  dist=node[1]

  parent=node[2]

  S[v]=dist

  childs=E[v]

  for child in childs:

    if child==parent:

      continue

    stack.append([child,dist+1,v])



FenWin=0

SunWin=0

for i in range(N):

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

    FenWin+=1

  else:

    SunWin+=1

print((("Snuke","Fennec")[FenWin>SunWin]))
# 全ての頂点について、フェネックからの距離とすぬけくんからの距離を求める

# フェネックからの距離 <= すぬけくんから距離　の頂点は黒　そうでなければ白



import sys

readline = sys.stdin.readline



N = int(readline())

G = [[] for i in range(N)]

for i in range(N - 1):

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

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

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

  

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

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



stack = []

# 頂点、距離、親

stack.append([0,0,-1])

while stack:

  v,dist,parent = stack.pop()

  dist_from_fen[v] = dist

  for child in G[v]:

    if child == parent:

      continue

    stack.append([child,dist + 1,v])



stack = []

stack.append([N - 1,0,-1])

while stack:

  v,dist,parent = stack.pop()

  dist_from_snk[v] = dist

  for child in G[v]:

    if child == parent:

      continue

    stack.append([child,dist + 1,v])



black = 0

white = 0

for i in range(N):

  if dist_from_fen[i] <= dist_from_snk[i]:

    black += 1

  else:

    white += 1

print((("Snuke","Fennec")[black > white]))
N = int(eval(input()))
E = [[] for i in range(N)]
for i in range(N - 1):
    a, b = list(map(int, input().split()))
    a, b = a - 1, b - 1
    E[a].append(b)
    E[b].append(a)
F = [0] * N
S = [0] * N
stack = []
# 番号、距離、親
stack.append([0, 0, -1])
while stack:
    node = stack.pop()
    v = node[0]
    dist = node[1]
    parent = node[2]
    F[v] = dist
    childs = E[v]
    for child in childs:
        if child == parent:
            continue
        stack.append([child, dist + 1, v])
stack = []
# 番号、距離、親
stack.append([N - 1, 0, -1])
while stack:
    node = stack.pop()
    v = node[0]
    dist = node[1]
    parent = node[2]
    S[v] = dist
    childs = E[v]
    for child in childs:
        if child == parent:
            continue
        stack.append([child, dist + 1, v])
FenWin = 0
SunWin = 0
for i in range(N):
    if F[i] <= S[i]:
        FenWin += 1
    else:
        SunWin += 1
print((("Snuke", "Fennec")[FenWin > SunWin]))

# 全ての頂点について、フェネックからの距離とすぬけくんからの距離を求める
# フェネックからの距離 <= すぬけくんから距離　の頂点は黒　そうでなければ白
import sys

readline = sys.stdin.readline
N = int(readline())
G = [[] for i in range(N)]
for i in range(N - 1):
    a, b = list(map(int, readline().split()))
    G[a - 1].append(b - 1)
    G[b - 1].append(a - 1)
dist_from_fen = [-1 for i in range(N)]
dist_from_snk = [-1 for i in range(N)]
stack = []
# 頂点、距離、親
stack.append([0, 0, -1])
while stack:
    v, dist, parent = stack.pop()
    dist_from_fen[v] = dist
    for child in G[v]:
        if child == parent:
            continue
        stack.append([child, dist + 1, v])
stack = []
stack.append([N - 1, 0, -1])
while stack:
    v, dist, parent = stack.pop()
    dist_from_snk[v] = dist
    for child in G[v]:
        if child == parent:
            continue
        stack.append([child, dist + 1, v])
black = 0
white = 0
for i in range(N):
    if dist_from_fen[i] <= dist_from_snk[i]:
        black += 1
    else:
        white += 1
print((("Snuke", "Fennec")[black > white]))

-N = int(eval(input())) -E = [[] for i in range(N)] +# 全ての頂点について、フェネックからの距離とすぬけくんからの距離を求める +# フェネックからの距離 <= すぬけくんから距離　の頂点は黒　そうでなければ白 +import sys + +readline = sys.stdin.readline +N = int(readline()) +G = [[] for i in range(N)] -    a, b = list(map(int, input().split())) -    a, b = a - 1, b - 1 -    E[a].append(b) -    E[b].append(a) -F = [0] * N -S = [0] * N +    a, b = list(map(int, readline().split())) +    G[a - 1].append(b - 1) +    G[b - 1].append(a - 1) +dist_from_fen = [-1 for i in range(N)] +dist_from_snk = [-1 for i in range(N)] -# 番号、距離、親 +# 頂点、距離、親 -    node = stack.pop() -    v = node[0] -    dist = node[1] -    parent = node[2] -    F[v] = dist -    childs = E[v] -    for child in childs: +    v, dist, parent = stack.pop() +    dist_from_fen[v] = dist +    for child in G[v]: -# 番号、距離、親 -    node = stack.pop() -    v = node[0] -    dist = node[1] -    parent = node[2] -    S[v] = dist -    childs = E[v] -    for child in childs: +    v, dist, parent = stack.pop() +    dist_from_snk[v] = dist +    for child in G[v]: -FenWin = 0 -SunWin = 0 +black = 0 +white = 0 -    if F[i] <= S[i]: -        FenWin += 1 +    if dist_from_fen[i] <= dist_from_snk[i]: +        black += 1 -        SunWin += 1 -print((("Snuke", "Fennec")[FenWin > SunWin])) +        white += 1 +print((("Snuke", "Fennec")[black > white]))