#include<bits/stdc++.h>
using namespace std;
int head[200010],o=0,di=-1,ans=0,n;
bool vis[200010];
struct edge{
	int to,link;
}e[400010];
void add_edge(int u,int v){
	e[++o].link=head[u],e[o].to=v,head[u]=o;
	e[++o].link=head[v],e[o].to=u,head[v]=o;
}
void dfs(int u,int d,bool k){
	vis[u]=k;
	if(ans<d){
		ans=d;
		di=u;
	}
	for(int i=head[u];i;i=e[i].link){
		if(vis[e[i].to]!=k) dfs(e[i].to,d+1,k);
	}
}
int main(){
	scanf("%d",&n);
	for(int i=1,u,v;i<n;i++) scanf("%d %d",&u,&v),add_edge(u,v);
	dfs(1,1,1);
	dfs(di,1,0);
	ans%3==2?printf("Second\n"):printf("First\n");
}