#include<bits/stdc++.h>

using namespace std;

int n;
vector<int> G[100100];
bool visit[100100];

int bfs(int idx){

    if(visit[idx]) return 0;
    visit[idx] = 1;

    int ans = 1;
    for(int i = 0; i<G[idx].size(); i++)
        ans+=bfs(G[idx][i]);

    return ans;
}

int main()
{
    scanf("%d",&n);

    int a, b;

    memset(visit,0,sizeof visit);


    for(int i = 0; i<n-1; i++){
        scanf("%d%d",&a,&b);
        a--, b--;
        G[a].push_back(b);
        G[b].push_back(a);

    }

    vector<int> Path;
    Path.push_back(0);
    visit[0]=1;

    queue< vector<int> > Q;
    Q.push(Path);


    while(!Q.empty()){

        Path = Q.front();
        Q.pop();

        int u = Path[Path.size()-1];
        if(u==n-1) break;

        for(int i = 0; i<G[u].size(); i++){
            if(!visit[G[u][i]]){
                Path.push_back(G[u][i]);
                Q.push(Path);
                visit[G[u][i]]=1;
                Path.pop_back();
            }
        }

    }

    memset(visit,0,sizeof visit);

    for(int i = 0; i<Path.size(); i++)
        visit[Path[i]]=1;

    int piv = (Path.size()+1)/2;

    int contF = 0;

    for(int i = 0; i<piv; i++){
        contF++;
        int u = Path[i];

        for(int j = 0; j<G[u].size(); j++)
            contF+=bfs(G[u][j]);
    }

    int contS = 0;

    for(int i = piv; i<Path.size(); i++){
        contS++;
        int u = Path[i];

        for(int j = 0; j<G[u].size(); j++)
            contS+=bfs(G[u][j]);
    }

    assert(contF+contS==n);

    if(contF>=contS){
        puts("Fennec");
    }else{
        puts("Snuke");
    }

    return 0;
}
