#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e4 + 5;
int rt, n, sz[maxn], maxp[maxn];
vector<int>edge[maxn];
inline int read(){
int s = 0, w = 1; char ch = getchar();
while(ch < '0' || ch > '9'){ if(ch == '-') w = -1; ch = getchar();}
while(ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar();
return s * w;
}
inline void print(int x){
if(x < 0) x = ~x + 1, putchar('-');
if(x > 9) print(x / 10);
putchar(x % 10 + '0');
}
void dfs(int u, int f){
sz[u] = 1, maxp[u] = 0;
for(auto v : edge[u]){
if(v == f) continue;
dfs(v, u);
sz[u] += sz[v];
maxp[u] = max(maxp[u], sz[v]);
}
maxp[u] = max(maxp[u], n - sz[u]);
if(maxp[u] < maxp[rt]) rt = u;
}
int main(){
n = read();
for(int i = 1; i < n; i++){
int u = read(), v = read();
edge[u].push_back(v);
edge[v].push_back(u);
}
maxp[rt] = n;
dfs(1, 0);
for(int i = 1; i <= n; i++)
if(maxp[i] == maxp[rt]) print(i), putchar(' ');
return 0;
}