# coding: utf-8

# Your code here!



def diameter(g):

    def dfs(v,p): # v からの最長点と距離を求める

        m = 0

        i = v

        for c in g[v]:

            if c == p: continue

            mc,ic = dfs(c,v)

            mc += 1  #重みつきのときは+1でなく +cost(v,c)

            if m < mc:

                m = mc

                i = ic

        return (m,i)



    m0,i0 = dfs(0,-1)

    m1,i1 = dfs(i0,-1)

    # i0, i1 が最遠頂点対

    return m1



##################################################

# coding: utf-8

# Your code here!

import sys

sys.setrecursionlimit(10**6)

readline = sys.stdin.readline

 

n = int(eval(input()))

#n,q = [int(i) for i in readline().split()]

 

g = [[] for _ in range(n)]

for i in range(n-1):

    a,b = [int(i) for i in readline().split()]

    g[a-1].append(b-1)

    g[b-1].append(a-1)



d = diameter(g)

if d%3 != 1:

    print("First")

else:

    print("Second")

    

    

    

    











# coding: utf-8

# Your code here!



from collections import deque

def diameter(g):

    def bfs(start): # v からの最長点と距離を求める

        q = deque([(0,start,-1)])

        while q:

            d,v,p = q.popleft()

            for c in g[v]:

                if c == p: continue

                q.append((d+1,c,v)) #重みつきのときはm+1でなく m+cost(v,c)

        return (d,v)



    d0,v0 = bfs(0)

    d1,v1 = bfs(v0)

    return d1 # i0, i1 が最遠頂点対





##################################################

# coding: utf-8

# Your code here!

import sys

sys.setrecursionlimit(10**6)

readline = sys.stdin.readline

 

n = int(eval(input()))

#n,q = [int(i) for i in readline().split()]

 

g = [[] for _ in range(n)]

for i in range(n-1):

    a,b = [int(i) for i in readline().split()]

    g[a-1].append(b-1)

    g[b-1].append(a-1)



d = diameter(g)

if d%3 != 1:

    print("First")

else:

    print("Second")

    

    

    

    











# coding: utf-8
# Your code here!
def diameter(g):
    def dfs(v, p):  # v からの最長点と距離を求める
        m = 0
        i = v
        for c in g[v]:
            if c == p:
                continue
            mc, ic = dfs(c, v)
            mc += 1  # 重みつきのときは+1でなく +cost(v,c)
            if m < mc:
                m = mc
                i = ic
        return (m, i)

    m0, i0 = dfs(0, -1)
    m1, i1 = dfs(i0, -1)
    # i0, i1 が最遠頂点対
    return m1


##################################################
# coding: utf-8
# Your code here!
import sys

sys.setrecursionlimit(10**6)
readline = sys.stdin.readline
n = int(eval(input()))
# n,q = [int(i) for i in readline().split()]
g = [[] for _ in range(n)]
for i in range(n - 1):
    a, b = [int(i) for i in readline().split()]
    g[a - 1].append(b - 1)
    g[b - 1].append(a - 1)
d = diameter(g)
if d % 3 != 1:
    print("First")
else:
    print("Second")

# coding: utf-8
# Your code here!
from collections import deque


def diameter(g):
    def bfs(start):  # v からの最長点と距離を求める
        q = deque([(0, start, -1)])
        while q:
            d, v, p = q.popleft()
            for c in g[v]:
                if c == p:
                    continue
                q.append((d + 1, c, v))  # 重みつきのときはm+1でなく m+cost(v,c)
        return (d, v)

    d0, v0 = bfs(0)
    d1, v1 = bfs(v0)
    return d1  # i0, i1 が最遠頂点対


##################################################
# coding: utf-8
# Your code here!
import sys

sys.setrecursionlimit(10**6)
readline = sys.stdin.readline
n = int(eval(input()))
# n,q = [int(i) for i in readline().split()]
g = [[] for _ in range(n)]
for i in range(n - 1):
    a, b = [int(i) for i in readline().split()]
    g[a - 1].append(b - 1)
    g[b - 1].append(a - 1)
d = diameter(g)
if d % 3 != 1:
    print("First")
else:
    print("Second")

+from collections import deque + + -    def dfs(v, p):  # v からの最長点と距離を求める -        m = 0 -        i = v -        for c in g[v]: -            if c == p: -                continue -            mc, ic = dfs(c, v) -            mc += 1  # 重みつきのときは+1でなく +cost(v,c) -            if m < mc: -                m = mc -                i = ic -        return (m, i) +    def bfs(start):  # v からの最長点と距離を求める +        q = deque([(0, start, -1)]) +        while q: +            d, v, p = q.popleft() +            for c in g[v]: +                if c == p: +                    continue +                q.append((d + 1, c, v))  # 重みつきのときはm+1でなく m+cost(v,c) +        return (d, v) -    m0, i0 = dfs(0, -1) -    m1, i1 = dfs(i0, -1) -    # i0, i1 が最遠頂点対 -    return m1 +    d0, v0 = bfs(0) +    d1, v1 = bfs(v0) +    return d1  # i0, i1 が最遠頂点対