#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 5;
vector<int> V[maxn];
int u, v, n, vis[maxn], vis1[maxn], vis2[maxn], color[maxn];
int flag = 0, ans1 = 0, ans2 = 0;
void dfs(int p, int deep){
	if(p == n){
		flag = deep;
		return ;
	}
	for(int i = 0; i < V[p].size(); i++){
		if(!vis[V[p][i]]){
			vis[V[p][i]] = 1;
			dfs(V[p][i], deep + 1);
		}
		if(flag){
			if(deep <= flag / 2) color[p] = 1;
			else if(deep > flag / 2) color[p] = -1;
			return ;
		}
	}
}
 
void DFS1(int p){
	if(color[p] != -1){
		ans1++;
		for(int i = 0; i < V[p].size(); i++){
			if(!vis[V[p][i]]){
				vis[V[p][i]] = 1;
				DFS1(V[p][i]);
			}
		}
	}
}
 
void DFS2(int p){
	if(color[p] != 1){
		ans2++;
		for(int i = 0; i < V[p].size(); i++){
			if(!vis[V[p][i]]){
				vis[V[p][i]] = 1;
				DFS2(V[p][i]);
			}
		}
	}
}
 
int main()
{
	scanf("%d", &n);
	for(int i = 1; i < n; i++){
		scanf("%d%d", &u, &v);
		V[u].push_back(v);
		V[v].push_back(u);
	}
	color[1] = 1;
	color[n] = -1;
	
	memset(vis, 0, sizeof(vis));
	vis[1] = 1;
	dfs(1, 0);
	
	memset(vis, 0, sizeof(vis));
	vis[1] = 1;
	DFS1(1);
	
	memset(vis, 0, sizeof(vis));
	vis[n] = 1;
	DFS2(n);
	
	if(ans1 - ans2 > 0)
		printf("Fennec\n");
	else
		printf("Snuke\n");
	return 0;
}
