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

class Node{
	Node[] adjnodes;
	Node[] kids;
	Node parent;
	int id;
	this(int id){
		this.id = id;
		}
	void add(Node nd){
		this.adjnodes ~= nd;
		nd.adjnodes ~= this;
		}
	void setKids(){
		foreach(nd; this.adjnodes){
			if(!this.parent || nd.id != this.parent.id){
				this.kids ~= nd;
				nd.parent = this;
				nd.setKids;
				}
			}
		}
	int getStatus(){ // 0: I am single; 1: I am paired; 2: Cannot pair
		if(this.kids.length == 0){
			return 0 /* single */;
			}
		else if(this.kids.length == 1){
			int s = this.kids[0].getStatus;
			if(s == 0 /* single */) return 1 /* paired */;
			else if(s == 1) return 0 /* single */;
			else return 2 /* error */;
			}
		else{
			int s = 0 /* single */;
			foreach(nd; this.kids){
				int s1 = nd.getStatus;
				if(s1 == 2 /* error */) return 2 /* error */;
				if(s1 == 0 /* single */){
					if(s == 0 /* single */) s = 1 /* paired */;
					else return 2 /* error */;
					}
				}
			return s;
			}
		}
	}

void main(){
	int n = read.to!int;
	
	Node[int] nodes;
	foreach(i; 1 .. n + 1){
		nodes[i] = new Node(i);
		}
	
	foreach(i; 1 .. n){
		int a = read.to!int;
		int b = read.to!int;
		nodes[a].add(nodes[b]);
		}
	
	nodes[1].setKids;
	
	string ans;
	if(nodes[1].getStatus == 1 /* paired */) ans = "Second";
	else ans = "First";
	
	ans.writeln;
	}