/***************************************************************\
*Author:Hu Wenbiao
*Created Time: Tue 17 Aug 2010 05:56:33 PM CST
*File Name: main.cpp
*Description:树状dp。跟poj1655几乎相同
\***************************************************************/
//*========================*Head File*========================*\\
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*----------------------*Global Variable*----------------------*/
int first[10010],N,X,Y,dp[10010],tot;
struct Edge{
int to,next;
}edge[20010];
//*=======================*Main Program*=======================*//
using namespace std;
void insertedge(int X,int Y){
edge[tot].to=Y;
edge[tot].next=first[X];
first[X]=tot++;
edge[tot].to=X;
edge[tot].next=first[Y];
first[Y]=tot++;
}
int tree_dp(int from,int now){
int sum=1,_max=0,tmp;
int p=first[now],to;
while(p!=-1){
to=edge[p].to;
p=edge[p].next;
if(to==from)continue;
tmp=tree_dp(now,to);
if(_max<tmp)
_max=tmp;
sum+=tmp;
}
dp[now]=N-sum>_max?N-sum:_max;
return sum;
}
int main(){
//freopen("input","r",stdin);
while(scanf("%d",&N)!=EOF){
memset(first,-1,sizeof(first));
tot=0;
for(int i=1;i<N;i++){
scanf("%d%d",&X,&Y);
insertedge(X,Y);
}
tree_dp(0,1);
for(int i=1;i<=N;i++){
if(dp[i]<=N/2)
printf("%d\n",i);
}
}
}