import scala.collection.mutable
import scala.io.StdIn._
object Main extends App {

  val n = readInt()
  val nodes = Array.fill(n){Nil: List[Int]}
  for (_ ← 1 until n){
    val Array(a, b) = readLine.trim.split(' ').map(_.toInt - 1)
    nodes(a) ::= b
    nodes(b) ::= a
  }
  println(
    if (calRadius(nodes) % 3 == 2) "Second" else "First"
  )

  def calRadius(tree: Array[List[Int]]): Int = {
    val distances = Array.fill(tree.length){-1 }
    val queue = mutable.Queue[Int]()
    queue.enqueue(0)
    distances(0) = 0
    while(queue.nonEmpty) {
      val current = queue.dequeue()
      for (next ← tree(current) if distances(next) == -1) {
        distances(next) = distances(current) + 1
        queue.enqueue(next)
      }
    }
    val max = distances.indices.maxBy(distances)
    distances.indices.foreach(i ⇒ distances(i) = -1)
    queue.enqueue(max)
    distances(max) = 1
    while(queue.nonEmpty){
      val current = queue.dequeue()
      for (next ← tree(current) if distances(next) == -1){
        distances(next) = distances(current) + 1
        queue.enqueue(next)
      }
    }
    distances.max
  }
}