import std.stdio;
import std.conv, std.array, std.algorithm, std.string;
import std.math, std.random, std.range, std.datetime;
import std.bigint;
import std.container;
string read(){ static string[] ss; while(!ss.length) ss = readln.chomp.split; string res = ss[0]; ss.popFront; return res; }

class Node{
	bool[Node] adjnodeset;
	long id;
	long value = -1;
	bool isVisited = 0;
	this(long id){
		this.id = id;
		}
	void add(Node nd){
		this.adjnodeset[nd] = 1;
		nd.adjnodeset[this] = 1;
		}
	void extend(){
		if(this.isVisited) return;
		foreach(nd; adjnodeset.keys){
			if(nd.value < 0){
				nd.value = this.value;
				f = 1;
				}
			}
		this.isVisited = 1;
		}
	}

bool f;

void main(){
	long n = read.to!long;
	
	Node[long] nodes;
	foreach(i; 0 .. n) nodes[i + 1] = new Node(i + 1);
	
	foreach(i; 0 .. n - 1){
		long a = read.to!long;
		long b = read.to!long;
		nodes[a].add(nodes[b]);
		}
	
	nodes[1].value = 1;
	nodes[n].value = 2;
	
	for(int i = 0; i < 100_000; i ++){
		f = 0;
		foreach(nd; nodes) if(nd.value == 1) nd.extend();
		foreach(nd; nodes) if(nd.value == 2) nd.extend();
		if(f == 0) break;
		}
	
	long count;
	foreach(nd; nodes) if(nd.value == 1) count += 1;
	
	string ans;
	if(count > n / 2) ans = "Fennec";
	else ans = "Snuke";
	
	ans.writeln;
	
	}
