#include<iostream>
#include<vector>
#include<set>
#include<cstring>
using namespace std;
vector<vector<int> > v;
vector<int> temp;
bool vis[10010]={false};
int maxdepth=0;
void dfs(int index,int depth){
vis[index]=true;
if(depth>maxdepth){
maxdepth=depth;
temp.clear();
temp.push_back(index);
}else if(depth==maxdepth)
temp.push_back(index);
for(int i=0;i<v[index].size();i++)
if(vis[v[index][i]]==false)
dfs(v[index][i],depth+1);
}
int main(){
int n,a,b,cnt=0,s1;
set<int> s;
scanf("%d",&n);
v.resize(n+1);
for(int i=1;i<n;i++){
scanf("%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
for(int i=1;i<=n;i++){
if(vis[i]==false){
dfs(i,1);
if(i==1){
s1=temp[0];
for(int i=0;i<temp.size();i++)
s.insert(temp[i]);
}
cnt++;
}
}
if(cnt>=2) printf("Error: %d components",cnt);
else{
temp.clear();
maxdepth=0;
memset(vis,false,sizeof(vis));
dfs(s1,1);
for(int i=0;i<temp.size();i++)
s.insert(temp[i]);
for(set<int>::iterator it=s.begin();it!=s.end();it++)
printf("%d\n",*it);
}
return 0;
}