#include using namespace std; #define rep(i,n) for(int i=0; i<(n); i++) #define INF ((1LL<<62)-(1LL<<31)) #define all(a) (a).begin(),(a).end() #define rall(a) (a).rbegin(),(a).rend() typedef long long ll; typedef pair pl; ll ans=0; priority_queue> dfs(vector> &g,int pos,int par) { ll cnt=0,ret=1; priority_queue> pq; for(auto nv:g[pos]) { if(nv==par) continue; cnt++; priority_queue> pq2=dfs(g,nv,pos); while(!pq2.empty()) { pq.push(pq2.top()); pq2.pop(); } } if(cnt==0) { pq.push(1); return pq; } rep(i,2) { if(pq.empty()) break; ret+=pq.top(); pq.pop(); } if(pos==0) ans=ret; pq.push(ret); return pq; } int main() { ll n; cin >> n; vector> g(n,vector ()); vector deg(n,0); rep(i,n-1) { int u,v; cin >> u >> v; u--; v--; g[u].push_back(v); g[v].push_back(u); } priority_queue> pq=dfs(g,0,-1); cout << ans << endl; return 0; }