/*input

*/
#include <bits/stdc++.h>
#include <stdlib.h>
#include <time.h> 

using namespace std;
long long mod=1e9+7;
long long INF=1e7;
typedef long long int lld;
#define rep(i,a,n) for(long long int i = (a); i <= (n); ++i)
#define repI(i,a,n) for(int i = (a); i <= (n); ++i)
#define repD(i,a,n) for(long long int i = (a); i >= (n); --i)
#define repDI(i,a,n) for(int i = (a); i >= (n); --i)
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define sc(a) scanf("%lld",&a)
#define sc2(a,b) scanf("%lld%lld",&a,&b)
#define sc3(a,b,c) scanf("%lld%lld%lld",&a,&b,&c)
#define scd(a) scanf("%d",&a)
#define scd2(a,b) scanf("%d%d",&a,&b)
#define scd3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define scf(a) scanf("%lf",&a)
#define scf2(a,b) scanf("%lf%lf",&a,&b)
#define scf3(a,b,c) scanf("%lf%lf%lf",&a,&b,&c)
#define prL(a) printf("%lld\n",a)
#define prS(a) printf("%lld ",a)
#define prdL(a) printf("%d\n",a)
#define prdS(a) printf("%d ",a)
#define all(c) c.begin(), c.end()
#define sz(a) ((int)a.size())
#define Error(x) cout<< #x << " = " << (x) <<endl;
#define Error2(a,b) cout<<"( "<<#a<<" , "<<#b<<" ) = ( "<<(a)<<" , "<<(b)<<" )\n";
#define Error3(a,b,c) cout<<"("<<#a<<" , "<<#b<<" , "<<#c<<" ) = ( "<<(a)<<" , "<<(b)<<" , "<<(c)<<")\n";
#define Error4(a,b,c,d) cout<<"("<<#a<<" , "<<#b<<" , "<<#c<<" , "<<#d<<" ) = ( "<<(a)<<" , "<<(b)<<" , "<<(c)<<" , "<<(d)<<")\n";
#define errop(a) cout<<#a<<" = ( "<<((a).x)<<" , "<<((a).y)<<" )\n";
#define mset(a, v) memset(a, v, sizeof(a))
#define popcount __builtin_popcountll
typedef pair<lld,lld> PA;
#define lim 200003
#define lim2 200003
#define qqqqqq 210
// inline lld sqr(lld x) { return x * x; }
// unordered_map<lld,lld>::iterator it;
// std::ios::sync_with_stdio(false);
// priority_queue<PA> Q;
// lld dp[1<<18];

// PA P[lim],Q[lim];
// string S[lim];
// map<PA,lld> M;
// vector<lld> V[lim],R[lim];
// unordered_map<lld,lld> Ind;
// lld A[lim],B[lim];

lld powP(lld a,lld b){
    if(b==0) return 1%mod;
    lld k;
    k=powP(a,b/2);
    k=k*k%mod;
    if(b%2==0) return k;
    else return a*k%mod;
}

bool bitSet(lld n,lld i){
    if((n&(1LL<<i))!=0) return true;
    else return false;
}

lld findGcd(lld a,lld b){
    if(a==0) return b;
    else return findGcd(b%a,a);
}


lld n,m,p,q,k,result;
unordered_map<lld,lld> M,R;
// map<PA,lld> M;
// PA P[lim2];
// pair<PA,PA> Q[lim2];
// lld Ans[lim2];

lld A[lim],L[lim],dp[lim],P[lim];
vector<lld> V[lim];
// for initializing sparse table by this function
// Add parent in argument list and P[x][0] = parent in body
void fillLevel(lld x,lld d,lld par){
    lld n,t;
    lld val = 1;
    L[x]=d;
    n=V[x].size();
    P[x] = par;
    rep(i,0,n-1){
        t=V[x][i];
        if(L[t]==-1){
            fillLevel(t,d+1,x);
            val += dp[t];
        }
    }
    dp[x] = val;
    return ;
}

int main(){
    lld T,i,p,j,l,e,r,b,c,k,q,a,d,w,x,y,v,z,t,curr,prev,sum,ans,pos,val,countA,secondMin,indicator;
    sc(n);
    rep(i,1,n) L[i] = -1;
    rep(i,1,n-1){
        lld a,b;
        sc2(a,b);
        V[a].pb(b);
        V[b].pb(a);
    }
    fillLevel(1,0,1);
    lld fen,snu;
    lld dis;
    dis = (L[n] - 1)/2;
    lld org = n;
    while(dis > 0){
        n = P[n];
        dis--;
    }
    snu = dp[n];
    fen = org - snu;
    if(fen > snu) printf("Fennec\n");
    else printf("Snuke\n");
    return 0;
}

Measured memory_bytes: 21376