#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <numeric>
#include <functional>
#include <map>
#include <queue>
#include <stdio.h>
    
#define REP(i,n) for(int (i)=0; (i)<(n); (i)++)

using namespace std;
using ll = long long;
using P = pair<int, int>;
using TP = tuple<ll, ll, ll>;
ll MOD = 1e9+7;
const int INF = 1e6;
const ll LINF = (ll)1e19;

int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    
    int N;
    cin >> N;
    vector<int> state(N+1,-1);
    vector<int> state_o(N+1,-1);
    vector<vector<int>> code(N+1);
    queue<int> q;
    queue<P> q2;
    REP(i, N-1){
        int a, b;
        cin >> a >> b;
//        a--;
//        b--;
        code[a].push_back(b);
        code[b].push_back(a);
    }
    state_o = state;

    int fenec = 0;
    int snuke = 0;
    q2.push(make_pair(N,0));
    while(!q2.empty()){
        P p = q2.front(); q2.pop();
        int e = p.first;
        int d = p.second;
        //        cout << e << endl;
        if(state[e] == -1){
            state[e] = d;
            for(int i = 0; i < code[e].size(); i++){
//                if(state[code[e][i]] != -1){
                    q2.push(make_pair(code[e][i], d+1));
//                }
            }
        }
    }
//    REP(i, state.size()){
//        cout << i << ": " << state[i] << endl;;
//    }
//    cout << endl;
    
    int lim = ((state[1]+1)/2.0);
    int lim2 = state[1]+1 - lim;

    q.push(1);
    while(!q.empty()){
        int e = q.front(); q.pop();
        if(state[e] >= lim && state[e] != -1){
            for(int i = 0; i < code[e].size(); i++){
//                if(state[code[e][i]] != -1){
                    q.push(code[e][i]);
//                }
            }
            fenec++;
            state[e] = -1;
        }
    }
//
//    REP(i, state.size()){
//        cout << i << ": " << state[i] << endl;;
//    }
//    cout << endl;
//
    

    q2.push(make_pair(1,0));
    while(!q2.empty()){
        P p = q2.front(); q2.pop();
        int e = p.first;
        int d = p.second;
        //        cout << e << endl;
        if(state_o[e] == -1){
            state_o[e] = d;
            for(int i = 0; i < code[e].size(); i++){
//                if(state_o[code[e][i]] != -1){
                    q2.push(make_pair(code[e][i], d+1));
//                }
            }
        }
    }
//    REP(i, state.size()){
//        cout << i << ": " << state_o[i] << endl;;
//    }
//    cout << endl;

    q.push(N);
    while(!q.empty()){
        int e = q.front(); q.pop();
//        cout << e << endl;
        if(state_o[e] >= lim2 && state_o[e] != -1){
//            cout << "/" << e << "/" << endl;
            for(int i = 0; i < code[e].size(); i++){
//                if(state_o[code[e][i]] > ceil((state_o[N-1])/2.0)){
//                    cout << ":" << code[e][i] << " - " << state_o[code[e][i]] <<  endl;
                    q.push(code[e][i]);
//                }
            }
            snuke++;
            state_o[e] = -1;
        }
    }
    
//    REP(i, state.size()){
//        cout << i << ": " << state_o[i] << endl;;
//    }
//    cout << endl;
//    cout << fenec << "," << snuke << endl;
    cout << ((fenec > snuke) ? "Fennec":"Snuke") << endl;
    
    return 0;    
}


Measured memory_bytes: 6784