#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
struct node{
int to;
int nxt;
} edge[2000004];
int head[1000005];
inline void add(int i,int u,int v){
edge[i].to=v;
edge[i].nxt=head[u];
head[u]=i;
return ;
}
int size[1000004];
int sum[1000004];
void dfs1(int u,int fa){
size[u]=1;
for(int i=head[u];i;i=edge[i].nxt){
int v=edge[i].to;
if(v!=fa){
dfs1(v,u);
sum[u]+=sum[v]+size[v];
size[u]+=size[v];
}
}
return ;
}
int dp[1000004],maxx,ans;
void dfs2(int u,int fa){
for(int i=head[u];i;i=edge[i].nxt){
int v=edge[i].to;
if(v!=fa){
dp[v]=dp[u]-size[v]+n-size[v];
dfs2(v,u);
}
}
if(dp[u]>maxx){
ans=u;
maxx=dp[u];
}
return ;
}
signed main (){
scanf("%d",&n);
for(int i=1;i<n;i++){
int x,y;
scanf("%d%d",&x,&y);
add(1<<i,x,y);
add((1<<i)-1,y,x);
}
dfs1(1,0);
dp[1]=sum[1];
dfs2(1,0);
cout<<ans<<endl;
return 0;
}