#include <bits/stdc++.h>
#define FOR(i,bg,ed) for(ll i=(bg);i<(ed);i++)
#define REP(i,n) FOR(i,0,n)
#define MOD 1000000007
#define int long long
using namespace std;
typedef long long ll;
const int INF = 1e9;

int N;
int a, b;

vector<int> G[101010];
vector<int> path;
vector<int> pathR;
int P[101010];

void dfs(int now, int pre)
{
    //cout << "AAA" << endl;
    P[now] = pre;
    REP(i,G[now].size()) {
        int next = G[now][i];
        if (next == pre) continue;
        dfs(next, now);
    }
}

int blackCnt = 0, whiteCnt = 0;
int bwn[101010];


signed main()
{
    cin >> N;
    REP(i,N-1) {
        cin >> a >> b;
        G[a].push_back(b);
        G[b].push_back(a);
    }

    dfs(1, -1);

    /*
    for (int i=1; i<=N; i++) {
        cout << "P[" << i << "] = " << P[i] << endl;
    }
    */

    for (int now=N; now!=-1; now=P[now]) {
        path.push_back(now);
    }

    /*
    REP(i,path.size()) {
        cout << "BBB " << path[i] << endl;
    }
    */

    pathR = path;
    reverse(pathR.begin(), pathR.end());

    /*
    REP(i,pathR.size()) {
        cout << "BBB " << pathR[i] << endl;
    }
    */

    set<int> ppp;
    queue<int> blackQ, whiteQ;
    if (pathR.size() % 2 == 0) {
        REP(i,pathR.size()/2) {
            blackQ.push(pathR[i]);
            bwn[pathR[i]] = 1;
            blackCnt++;
            ppp.insert(pathR[i]);
        }
        FOR(i,pathR.size()/2,pathR.size()) {
            whiteQ.push(pathR[i]);
            bwn[pathR[i]] = -1;
            whiteCnt++;
            ppp.insert(pathR[i]);
        }
    } else {
        REP(i,pathR.size()/2+1) {
            blackQ.push(pathR[i]);
            bwn[pathR[i]] = 1;
            blackCnt++;
            ppp.insert(pathR[i]);
        }
        FOR(i,pathR.size()/2+1,pathR.size()) {
            whiteQ.push(pathR[i]);
            bwn[pathR[i]] = -1;
            whiteCnt++;
            ppp.insert(pathR[i]);
        }
    }


    int preBlackCnt = blackCnt, preWhiteCnt = whiteCnt;
    /*
    while (blackQ.size()) {
        cout << "BlackQ " << blackQ.front() << endl;
        blackQ.pop();
    }
    */

    while (blackQ.size()) {
        int Now = blackQ.front(); blackQ.pop();
        //cout << "Black now = " << Now << endl;
        if (ppp.find(Now) == ppp.end()) {
            if (bwn[Now] != 0) continue;
        }
        bwn[Now] = 1;
        blackCnt++;
        REP(i,G[Now].size()) {
            int next = G[Now][i];
            if (bwn[next] == 0) {
                blackQ.push(next);
            }
        }
    }

    while (whiteQ.size()) {
        int Now = whiteQ.front(); whiteQ.pop();
        if (ppp.find(Now) == ppp.end()) {
            if (bwn[Now] != 0) continue;
        }
        bwn[Now] = -1;
        whiteCnt++;
        REP(i,G[Now].size()) {
            int next = G[Now][i];
            if (bwn[next] == 0) {
                whiteQ.push(next);
            }
        }
    }

    //cout << "black" << blackCnt - preBlackCnt << endl;
    //cout << "white" << whiteCnt - preWhiteCnt << endl;

    blackCnt -= preBlackCnt;
    whiteCnt -= preWhiteCnt;

    if (whiteCnt == blackCnt) {
        cout << "Snuke" << endl;
    } else if (whiteCnt < blackCnt) {
        cout << "Fennec" << endl;
    } else {
        cout << "Snuke" << endl;
    }
}


Measured memory_bytes: 19060