// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;



typedef long long ll;

const int maxn=1e5+7;

const int inf=1e9+7;

const int mod=1e9+7;

#define pb push_back

#define pii pair<int,int>

#define F first

#define S second

#define rep(i,n) for (int i=1;i<=(n);i++)

#define rep2(i,a,b) for (int i=(a);i<=(b);i++)



vector <int> G[maxn];

set <int> fennec,snuck;

vector<int> color;

bool v[maxn]={0};

int sub[maxn]={0};



bool dfs (int now,int target)

{ v[now]=1;

if (now==target) {

	color.pb(now);

	return 1;

}

	for (int i:G[now])

	{

		if (!v[i])

		{

			if (dfs(i,target)) 

			{

			color.pb(now);

			return 1;

			}

		}

	}

	return 0;

} 



int dfs2(int now)

{

	v[now]=1;

	int sum=0;

	for (int i:G[now])

	{

		if (!v[i])

		{

			if (fennec.find(i)==fennec.end()&&

			snuck.find(i)==snuck.end())

			{

			sum+=1;

			//cout<<now<<' '<<i<<endl;

			sum+=dfs2(i);

			}

			else dfs2(i);

		}

	}

	sub[now]=sum;

	return sum;

} 



int main()

{

 	ios::sync_with_stdio(0); cin.tie(0);

 	int n;

 	cin>>n;

 	for (int i=1;i<=n-1;i++)

 	{

 		int a,b;

 		cin>>a>>b;

 		G[a].pb(b);

 		G[b].pb(a);

	}

	//cout<<"---"<<endl;

	dfs(1,n);

	memset(v,0,sizeof(v));

	int size=color.size();

	for (int i=0;i<size;i++)

	{

		//cout<<color[i]<<' ';

		if ((i+1)<=size/2) snuck.insert(color[i]);

		else fennec.insert(color[i]);

	}

	dfs2(1);

	int sums=0,sumf=0;

	//for (int i=1;i<=n;i++) cout<<sub[i]<<' ';

	for (auto j=snuck.begin();j!=snuck.end();j++)

	{ /*cout<<sub[(*j)]<<'/'; */sums+=sub[(*j)];}

	 for (auto j=fennec.begin();j!=fennec.end();j++)

	{/*cout<<sub[(*j)]<<'*';*/sumf+=sub[(*j)];}

	if (sumf+size-size/2>sums+size/2) cout<<"Fennec"<<endl;

	else cout<<"Snuke"<<endl;

}

// Faster C++ solution for the same problem (measured speedup: 3.6035823047904314x):


#include <iostream>

#include <cstdio>

#include <algorithm>

#include <iomanip>

#include <cmath>

#include <vector>

#include <queue>

#include <map>

#include <set>

#include <time.h>



#define rep(num)      for (long long _ = 0; _ < num; _++)

#define loop(i, num)  for (long long i = 0; i < num; i++)



using namespace std;



int n;



vector<bool> vis;



vector<vector<int>> nei, dis;



void dfs(int from, int len, int mem) {

    

    vis[from] = 1;

    

    dis[mem][from] = len;

    

    loop (i, nei[from].size()) {

        

        if (!vis[nei[from][i]]) {

            

            dfs(nei[from][i], len + 1, mem);

            

        }

        

    }

    

}



int main() {

    

    cin >> n;

    

    nei.resize(n + 1);

    

    vis.resize(n + 1);

    

    dis.resize(2, vector<int>(n + 1, 1e9));

    

    loop (i, n - 1) {

        

        int p1, p2;

        

        cin >> p1 >> p2;

        

        nei[p1].push_back(p2);

        

        nei[p2].push_back(p1);

        

    }

    

    dfs(1, 0, 0);

    

    loop (i, n + 1) {

        

        vis[i] = 0;

        

    }

    

    dfs(n, 0, 1);

    

    int f = 0, s = 0;

    

    for (int i = 1; i <= n; i++) {

        

        if (dis[0][i] > dis[1][i]) {

            

            ++s;

            

        } else {

            

            ++f;

            

        }

        

    }

    

    if (s >= f) {

        

        cout << "Snuke" << endl;

        

    } else {

        

        cout << "Fennec" << endl;

        

    }

    

}