func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   ostream &operator<<(ostream &os, vector<T> V) {     os <<  [  ;     for (auto v : V) os << v <<    ;     os <<  ] ;     return os;   }   template <class T>   ostream &operator<<(ostream &os, set<T> S) {     os <<  {  ;     for (auto s : S) os << s <<    ;     return os <<  } ;   }   template <class L, class R>   ostream &operator<<(ostream &os, pair<L, R> P) {     return os <<  (  << P.first <<  ,  << P.second <<  ) ;   }   template <class L, class R>   ostream &operator<<(ostream &os, map<L, R> M) {     os <<  {  ;     for (auto m : M) os <<  (  << m.first <<  :  << m.second <<  )  ;     return os <<  } ;   }   vector<long long> adj[500050];   long long a[500050], b[500050];   set<long long> s;   void dfs(long long x, long long pr) {     for (long long i = 0; i < adj[x].size(); i++)       if (adj[x][i] != pr) a[adj[x][i]] = *s.begin(), s.erase(s.begin());     b[x] = *s.begin();     s.erase(s.begin());     for (long long j = adj[x].size() - 1; j >= 0; j--)       if (adj[x][j] != pr) dfs(adj[x][j], x);   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     long long n, x, y;     cin >> n;     if (n == 1) {       cout <<  1 2 ;       return 0;     }     for (long long i = 2; i < 2 * n + 1; i++) s.insert(i);     for (long long i = 0; i < n - 1; i++)       cin >> x >> y, adj[x].push_back(y), adj[y].push_back(x);     a[1] = 1;     dfs(1, -1);     for (long long i = 1; i < n + 1; i++) cout << a[i] <<     << b[i] <<   n ;     return 0;   }   