#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------debug\n");
using namespace std;
const int maxn=1e6+10;
ll siz[maxn],dep[maxn],f[maxn];
int head[maxn],to[maxn<<1],nxt[maxn<<1],tot;
int n;
ll ans1,ans2;
void add(int u,int v){
to[++tot]=v;nxt[tot]=head[u];head[u]=tot;
}
void dfs1(int x,int faa)
{
dep[x]=dep[faa]+1;siz[x]=1;
for(int i=head[x];i;i=nxt[i])
{
int v=to[i]; if(v==faa) continue;
dfs1(v,x);
siz[x]+=siz[v];
}
}
void dfs2(int x,int faa)
{
// ddd
for(int i=head[x];i;i=nxt[i])
{
int v=to[i]; if(v==faa) continue;
f[v]=f[x]-2*siz[v]+n;
// cout<<v<<"->"<<f[v]<<endl;
dfs2(v,x);
}
}
int main()
{
ios::sync_with_stdio(false); cin.tie(0);
cin>>n;
for(int i=1;i<=n-1;i++){
int u,v;cin>>u>>v;
add(u,v);add(v,u);
}
dfs1(1,1);
for(int i=1;i<=n;i++) f[1]+=dep[i];//cout<<i<<"->"<<siz[i]<<endl;;
//cout<<f[1]<<endl;
dfs2(1,1);
for(int i=1;i<=n;i++){
// cout<<i<<"->"<<f[i]<<endl;
if(f[i]>ans1) ans2=i,ans1=f[i];
}
cout<<ans2<<'\n';
return 0;
}