#include <iostream>
#include <vector>
using namespace std;
int n;
vector<int> tree[100001];
int p[100001];
void dfs(int node){
for(int nxt : tree[node]){
//cout << "node : " << node << " | " << "nxt : " << nxt << " | ";
if(p[node] == nxt){
//cout << '\n';
continue;
}
p[nxt] = node;
//cout << "p[" << nxt << "] : " << p[nxt] << '\n';
dfs(nxt);
}
}
int main()
{
cin >> n;
for(int i = 0; i < n-1; i++){
int idx, num;
cin >> idx >> num;
tree[idx].push_back(num);
tree[num].push_back(idx);
}
dfs(1);
for(int i = 2; i <= n; i++)
cout << p[i] << '\n';
return 0;
}
//
//
//struct Node{
// Node *next;
// int data;
//};
//
//Node* make_Node(int data)
//{
// Node *a = new Node();
// a.data = data;
// a.next = nullptr;
// return a;
//}
//
//
//int main()
//{
// Node *head;
//
// head = make_Node(10);
//
// // data가 80을 가진 노드를 맨 마지막에 추가하고싶어
//
// Node* cur = head;
// while(cur.next!=nullptr)
// {
// cur=cur.next;
// }
//
// cur.next = make_Node(80);
//}
//psuedo 슈도코드 (의사코드)