#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;

int n, g[MAXN], nxt[MAXN << 1], to[MAXN << 1], edgeSize;
int dep[MAXN], size[MAXN]; bool vis[MAXN];

bool dfs(int x){
	size[x] = 1;
	if(x == n) vis[x] = true;
	for(int p = g[x]; p; p = nxt[p])
		if(!dep[to[p]]){
			dep[to[p]] = dep[x] + 1;
			if(dfs(to[p])) vis[x] = true;
			size[x] += size[to[p]];
		}
	return vis[x];
}
void addEdge(int u, int v){
	nxt[++ edgeSize] = g[u];
	to[g[u] = edgeSize] = v;
}
int main(){
	int i, u, v;
	scanf("%d", &n);
	for(i = 1; i < n; ++ i){
		scanf("%d%d", &u, &v);
		addEdge(u, v), addEdge(v, u);
	} dep[1] = 1, dfs(1);
	for(i = 1; i <= n; ++ i)
		if(vis[i] && dep[i] == (dep[n] + 1) / 2 + 1){
			printf("%s\n", size[i] >= n - size[i] ? "Snuke" : "Fennec");
			return 0;
		}
}