
import java.util.Scanner

/**
  *
  */

object Main extends App {
  val sc = new Scanner(System.in)
  val N = sc.nextInt
  val edges = Array.ofDim[Boolean](N, N)
  for(i <- 0 until N - 1) {
    val i = sc.nextInt - 1
    val j = sc.nextInt - 1
    edges(i)(j) = true
    edges(j)(i) = true
  }

  def hasMoreThan2Leaves(root: Int): Boolean = {
    val neighbors = 0.until(N).filter(edges(_)(root))
    neighbors.foreach(i => {
      edges(root)(i) = false
      edges(i)(root) = false
    })
    val (left, right) = neighbors.partition(i => {
      0.until(N).exists(edges(i)(_))
    })
    right.size > 1 || left.exists(hasMoreThan2Leaves(_))
  }

  if(N == 2) println("Second")
  else if(N % 2 == 1) println("First")
  else {
    val root = 0.until(N).find(i => edges(i).count(b => b) > 1).get
    if(hasMoreThan2Leaves(root)) println("First")
    else println("Second")
  }
}