#include <cstdio>
#include <iostream>
#define MN 201000

int f[MN];
int h[MN], nxt[2 * MN], to[2 * MN], K = 0;
int ans = 1;

void ins(int u, int v) {nxt[++K] = h[u]; h[u] = K; to[K] = v;}

void dfs(int x, int fa)
{
	f[x] = 1;
	int Max = -1, cMax = -1;
	for(int i = h[x]; i; i = nxt[i])
	{
		if(to[i] == fa) continue;
		dfs(to[i], x);
		f[x] = std::max(f[x], f[to[i]] + 1);
		if(f[to[i]] >= Max) {cMax = Max; Max = f[to[i]];}
		else if(f[to[i]] >= cMax) cMax = f[to[i]]; 
	}
	ans = std::max(ans, Max + cMax + 1);
}

int main()
{
	int n; scanf("%d", &n);
	for(int i = 1; i < n; i++)
	{
		int x, y; scanf("%d%d", &x, &y);
		ins(x, y); ins(y, x);
	}
	dfs(1, 0);
	ans = std::max(ans, f[1]);
	puts(ans % 3 == 2 ? "Second" : "First");
}