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 value1 = -1;
	long value2 = -1;
	this(long id){
		this.id = id;
		}
	void add(Node nd){
		this.adjnodeset[nd] = 1;
		nd.adjnodeset[this] = 1;
		}
	void extend1(){
		debug writeln("(", id, ")");
		foreach(nd; adjnodeset.keys){
			if(nd.value1 < 0){
				nd.value1 = this.value1 + 1;
				nd.extend1();
				}
			}
		}
	void extend2(){
		debug writeln("(", id, ")");
		foreach(nd; adjnodeset.keys){
			if(nd.value2 < 0){
				nd.value2 = this.value2 + 1;
				nd.extend2();
				}
			}
		}
	string dump(){
		return id.to!string ~ "[" ~ value1.to!string ~ " " ~ value2.to!string ~ "]";
		}
	}

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].value1 = 0, nodes[1].extend1();
	nodes[n].value2 = 0, nodes[n].extend2();
	
	long count;
	foreach(nd; nodes) if(nd.value1 <= nd.value2) count += 1;
	
	string ans;
	if(count > n / 2) ans = "Fennec";
	else ans = "Snuke";
	
	ans.writeln;
	
	debug nodes.values.map!(x => x.dump).join(" ").writeln;
	
	}
