/*I MAY NOT GET THE SUCCESS IMMEDIATELY BUT I WILL GET IT FOR SURE*/
#include<bits/stdc++.h>
#define opt std::ios_base::sync_with_stdio(false)
#define I int
#define li		int32_t
#define lli		long long
#define ulli unsigned long long

#define pn			 printf("\n")
#define nl			 cout<<'\n'
#define sf(N)        scanf("%lld",&N)
#define pf(N)        printf("%lld",N)
#define sf1(N1,N2)    scanf("%lld %lld",&N1,&N2)
#define pf1(N1,N2)    printf("%lld %lld",N1,N2)
#define sf2(N1,N2,N3) scanf("%lld %lld %lld",&N1,&N2,&N3)
#define pf2(N1,N2,N3) printf("%lld %lld %lld",N1,N2,N3)

#define sl          cout<<' '
#define ps          printf(" ")

#define rep(i,a,b)	for(i=a;i<b;i++)
#define repr(i,a,b)	for(i=a;i>b;i--)
#define elif		else if
#define mset(a,b)	memset(a,b,sizeof(a))

#define pb		push_back
#define pob		pop_back
#define itr		iterator
#define sz()	size()
#define szof    sizeof
#define lb		lower_bound
#define ub		upper_bound
#define mp		make_pair
#define vlli    vector<lli>
#define plli	pair<lli,lli>
#define vplli	vector<plli >
#define F   	first
#define S		second
#define Dup     erase(unique(V.begin(),V.end()),V.end())

#define bs      binary_search
#define ub      upper_bound
#define lb      lower_bound

#define ALL(V)  V.begin(),V.end()

#define MX1     100000
#define MX2     1000000
#define Inf     1000000000000000
#define mod		1000000007
using namespace std;

vlli V[MX1+1];

lli level[MX1+1];
bool visited[MX1+1];

lli level1[MX1+1];
bool visited1[MX1+1];

void bfs(lli x)
{
    visited[x]=1;
    level[x]=1;

    queue<lli>Q;
    Q.push(x);

    while(!Q.empty())
    {
        x=Q.front();
        Q.pop();

        lli i;
        rep(i,0,V[x].sz())
        {
            lli y=V[x][i];

            if(!visited[y])
            {
                Q.push(y);
                visited[y]=1;
                level[y]=level[x]+1;
            }
        }
    }
}


void bfs1(lli x)
{
    visited1[x]=1;
    level1[x]=1;

    queue<lli>Q;
    Q.push(x);

    while(!Q.empty())
    {
        x=Q.front();
        Q.pop();

        lli i;
        rep(i,0,V[x].sz())
        {
            lli y=V[x][i];

            if(!visited1[y])
            {
                Q.push(y);
                visited1[y]=1;
                level1[y]=level1[x]+1;
            }
        }
    }
}

lli Power(lli a,lli b)
{
    lli result=1;

    while(b)
    {
        if(b%2)
        {
            result=(result*a)%mod;
        }

        b=b>>1;
        a=(a*a)%mod;
    }

 return result;
}

int main()
{
    opt;

    /*#ifndef ONLINE_JUDGE
    freopen("double_squares.txt","r",stdin);
    freopen("double_squares_out.txt","w",stdout);
    #endif // ONLINE_JUDGE*/

    lli N,i;
    cin>>N;

    lli N1=N-1;
    while(N1--)
    {
        lli x,y;
        cin>>x>>y;

        V[x].pb(y);
        V[y].pb(x);
    }

    bfs(1);

    bfs1(N);

    lli cnt=0,cnt1=0;
    rep(i,1,N+1)
    {
        if(level1[i]<level[i])
        {
            cnt1++;
        }
        else
        {
            cnt++;
        }
    }

    /*rep(i,1,N+1)
    {
        cout<<level[i]<<' '<<level1[i];
        nl;
    }*/

    if(cnt>cnt1)
    {
        cout<<"Fennec";
    }
    else
    {
        cout<<"Snuke";
    }


 return 0;
}


Measured memory_bytes: 8260