def bfs(start):
global time, visit
time = [0] * (n + 1)
visit = [0] * (n + 1)
que = [start]
visit[start] = 1
while que:
x = que.pop(0)
for i in V[x]:
if visit[i] != 1:
visit[i] = 1
que.append(i)
time[i] = time[x] + 1
max_dist = max(time)
farthest = 1
for j in range(1, n + 1):
if time[j] == max_dist:
farthest = j
return farthest, max_dist
n = int(input())
time = [0] * (n + 1)
visit = [0] * (n + 1)
V = [set() for i in range(n + 1)]
for i in range(n - 1):
u, v = map(int, input().split())
V[u].add(v)
V[v].add(u)
farthest1, _ = bfs(1)
farthest2, diameter_edges = bfs(farthest1)
print(diameter_edges + 1)