func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, cnt, x, y, mx, tot;   int head[200005], bin[200005], V[200005 * 5], T[200005 * 5];   struct pl {     int v, nex;   } e[2 * 200005];   void add(int a, int b) {     cnt++;     e[cnt].v = b;     e[cnt].nex = head[a];     head[a] = cnt;     bin[a]++;   }   void dfs(int a, int fa, int ti) {     int fl = ti;     V[++tot] = a;     T[tot] = ti;     if (ti == mx && a != 1) {       ti -= bin[a];       V[++tot] = a;       T[tot] = ti;     }     int i = head[a];     while (i != 0) {       if (e[i].v != fa) {         dfs(e[i].v, a, ti + 1);         ti++;         V[++tot] = a;         T[tot] = ti;         if (ti == mx && a != 1) {           ti -= bin[a];           V[++tot] = a;           T[tot] = ti;         }       }       i = e[i].nex;     }     if (ti != fl - 1 && a != 1) {       ti = fl - 1;       V[++tot] = a;       T[tot] = ti;     }   }   int main() {     scanf( %d , &n);     if (n == 1) {       puts( 1 );       puts( 1 0 );       return 0;     }     for (int i = 1; i < n; i++) scanf( %d%d , &x, &y), add(x, y), add(y, x);     for (int i = 1; i <= n; i++) mx = max(mx, bin[i]);     dfs(1, 0, 0);     printf( %d n , tot);     for (int i = 1; i <= tot; i++) printf( %d %d n , V[i], T[i]);     return 0;   }   