#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>

using namespace std;
const int maxn = 100005;
vector<int> graph[maxn];
int main()
{
    int n;
    cin >> n;
    
    for(int i = 1; i < n; i++) {
        int a, b;
        cin >> a >> b;
        
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
    
    vector<bool> visited(n + 1, false);
    visited[0] = true;
    queue<int> q;
    q.push(0);
    while(!q.empty()) {
        int c = q.front();
        q.pop();
        cout << c << " ";
        
        for(int i = 0; i < (int) graph[c].size(); i++) {
            int neighbour = graph[c][i];
            if(!visited[neighbour]) {
                q.push(neighbour);
                visited[neighbour] = true;
            }
            
        }
    }
    

    q.push(n);
    visited[n] = true;
    vector<int> res;
    while(!q.empty()) {
        int c = q.front();
        q.pop();
        
        res.push_back(c);
        for(int i = 0; i < (int) graph[c].size(); i++) {
            int neighbour = graph[c][i];
            if(!visited[neighbour]) {
                visited[neighbour] = true;
                q.push(neighbour);
            }
        }
        
    }
    
    for(int i = (int) res.size() - 1; i >= 0; i--) {
        cout << res[i] << " ";
    }
    return 0;
}
