import sys sys.setrecursionlimit(10**7) n = int(input()) edge = [[] for _ in range(n)] for _ in range(n-1): u,v = map(int, input().split()) edge[u-1].append(v-1) edge[v-1].append(u-1) # dp0[i]:iを根とする部分木において,iを削除する時の最大値 # dp1[i]:iを根とする部分木において,iを削除しない時の最大値 dp0 = [0]*n dp1 = [1]*n def dfs(now,parent): for to in edge[now]: if to == parent: continue dfs(to,now) dp0[now] += max(dp0[to],dp1[to]) dp1[now] += max(dp0[to],dp1[to]-1) dfs(0,-1) print(max(dp0[0],dp1[0]))