#include <iostream>
#include <set>
#include <algorithm>
#include <vector>
using namespace std;
int f[10010];
int maxh=-1;
vector<int> g[10010];
int find(int x){
return f[x]==x?x:f[x]=find(f[x]);
}
void dfs(int u,int h,int pre){
maxh=max(maxh,h);
for(int i=0;i<g[u].size();i++)
if(g[u][i]!=pre)
dfs(g[u][i],h+1,u);
}
int main(){
int m;
scanf("%d",&m);
for(int i=1;i<=m;i++){
f[i]=i;
}
for(int i=0;i<m-1;i++){
int x,y;
cin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
f[find(x)]=find(y);
}
int k=0;
for(int i=1;i<=m;i++){
if(f[i]==i)
k++;
}
if(k!=1){
printf("Error: %d components",k);
return 0;
}
else{
set<int> ans;
int ansh=0;
for(int i=1;i<=m;i++){
maxh=0;
dfs(i,1,0);
if(maxh>ansh){
ansh=maxh;
ans.clear();
ans.insert(i);
}
else if(maxh==ansh)
ans.insert(i);
}
for(auto i:ans)
printf("%d\n",i);
return 0;
}
}