#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
#define ll long long
const int N=1000105;
ll n,ans,num=1,ansnum,maxd;
vector<int>a[N];
ll vis[N];
ll dp[N],size[N],dep[N];
void dfs(int u){
vis[u]=1;
size[u]=1;
for(int i=0;i<a[u].size();i++){
int v=a[u][i];
if(vis[v])continue;
dfs(v);
dep[v]=dep[u]+1;
size[u]+=size[v];
}
}
void zhuanyi (int u){
vis[u]=1;
for(int i=0;i<a[u].size();i++){
int v=a[u][i];
if(vis[v])continue;
dp[v]=dp[u]-size[v]+(n-size[v]);
if(dp[v]>dp[1]){
dp[1]=dp[v];
num=v;
}
zhuanyi (v);
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<n;i++){
int u,v;
cin>>u>>v;
a[u].push_back(v);
a[v].push_back(u);
}
dfs(1);
for(int i=1;i<=n;i++){
dp[1]+=dep[i];
}
memset(vis,0,sizeof(vis));
zhuanyi(1);
cout<<num<<endl;
return 0;
}