#include <iostream>
#include <vector>

#define MAXN 200005

int n;
std::vector<int> Adj[MAXN];
int d[MAXN];
int max;
int key;

void dfs(int u, int p)
{
	for(int v : Adj[u])
	{
		if(v != p)
		{
			d[v] = d[u] + 1;
			dfs(v, u);
			if(d[v] > max)
			{
				max = d[v];
				key = v;
			}
		}
	}
}

int main()
{
	int n;
	std::cin >> n;

	for(int i = 1; i < n; i++)
	{
		int a, b;
		std::cin >> a >> b;
		a--; b--;
		Adj[a].push_back(b);
		Adj[b].push_back(a);
	}

	d[0] = 0;
	dfs(0, -1);
	d[key] = 0;
	dfs(key, -1);

	int dp[n];
	dp[1] = true;
	dp[2] = false;

	for(int i = 3; i <= max+1; i++)
	{
		if((dp[i-1] == false) || (dp[i-2] == false))
			dp[i] = true;
		else
			dp[i] = false;
	}

	//std::cout << max << std::endl;

	if(dp[max+1])
		std::cout << "First";
	else
		std::cout << "Second";
}