#include <bits/stdc++.h>   using namespace std;   const double PI = acos(-1);   const double eps = 1e-12;   const int inf = 2000000000;   const long long int infLL = (long long int)1e18;   long long int MOD = 1000000007;   int MOD1 = 1000000007;   int MOD2 = 1000000009;   inline bool checkBit(long long int n, long long int i) {     return n & (1LL << i);   }   inline long long int setBit(long long int n, long long int i) {     return n | (1LL << i);     ;   }   inline long long int resetBit(long long int n, long long int i) {     return n & (~(1LL << i));   }   int dx[] = {0, 0, +1, -1};   int dy[] = {+1, -1, 0, 0};   inline bool EQ(double a, double b) { return fabs(a - b) < 1e-9; }   inline bool isLeapYear(long long int year) {     return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);   }   inline void normal(long long int &a) {     a %= MOD;     (a < 0) && (a += MOD);   }   inline long long int modMul(long long int a, long long int b) {     a %= MOD, b %= MOD;     normal(a), normal(b);     return (a * b) % MOD;   }   inline long long int modAdd(long long int a, long long int b) {     a %= MOD, b %= MOD;     normal(a), normal(b);     return (a + b) % MOD;   }   inline long long int modSub(long long int a, long long int b) {     a %= MOD, b %= MOD;     normal(a), normal(b);     a -= b;     normal(a);     return a;   }   inline long long int modPow(long long int b, long long int p) {     long long int r = 1LL;     while (p) {       if (p & 1) r = modMul(r, b);       b = modMul(b, b);       p >>= 1LL;     }     return r;   }   inline long long int modDiv(long long int a, long long int b) {     return modMul(a, modPow(b, MOD - 2));   }   bool comp(const pair<long long int, pair<long long int, long long int> > &p1,             const pair<long long int, pair<long long int, long long int> > &p2) {     return p1.first > p2.first;   }   bool comp1(const pair<long long int, long long int> &p1,              const pair<long long int, long long int> &p2) {     if (p1.first == p2.first) {       return p1.second > p2.second;     }     return p1.first < p2.first;   }   long long int converter(string a) {     long long int i, mul = 1LL, r, t, ans = 0LL;     if (a.length() == 0) return 0;     for (i = a.length() - 1; i >= 0; i--) {       t = a[i] -  0 ;       r = t % 10;       ans += (mul * r);       mul = mul * 10;     }     return ans;   }   int msb(unsigned x) {     union {       double a;       int b[2];     };     a = x;     return (b[1] >> 20) - 1023;   }   const int MAX = 2e5 + 5;   int parent[MAX], sz[MAX];   set<int> s[MAX];   int n, t[MAX], ans[MAX];   void init() {     for (int i = 1; i < MAX; i++) {       parent[i] = i, sz[i] = 1, t[i] = 1;       s[i].insert(i);     }   }   int root(int u) {     while (parent[u] != u) u = parent[parent[u]];     return u;   }   void union_make(int u, int v) {     int root_u = root(u);     int root_v = root(v);     if (root_u == root_v) return;     if (sz[root_u] >= sz[root_v]) {       parent[root_v] = parent[root_u];       sz[root_u] += sz[root_v];     } else {       parent[root_u] = parent[root_v];       sz[root_v] += sz[root_u];     }   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     ;     int x, y, i;     cin >> n;     init();     for (i = 1; i < n; ++i) {       cin >> x >> y;       int u = root(x);       int v = root(y);       if (sz[u] < sz[v]) swap(u, v);       long long int add = sz[u];       for (auto it : s[v]) {         s[u].insert(it);         t[it] += add;       }       s[v].clear();       union_make(x, y);     }     for (i = 1; i <= n; ++i) {       ans[t[i]] = i;     }     for (i = 1; i <= n; ++i) cout << ans[i] <<    ;     return 0;   }