#include <bits/stdc++.h>
using namespace std;
vector<int> adj[500100];
int L[500100], R[500100];
int place_segments(int u, int l, int r, int par = 0) {
  L[u] = l;
  R[u] = r;
  int R = r;
  for (int i = 0, nl = r - 1; i < adj[u].size(); i++) {
    int v = adj[u][i];
    if (v == par) continue;
    R = place_segments(v, nl--, R + (int)adj[v].size(), u);
  }
  return R;
}
int main() {
  int n;
  while (scanf("%d", &n) > 0) {
    for (int i = 0; i < n - 1; i++) {
      int x, y;
      scanf("%d%d", &x, &y);
      adj[x].push_back(y);
      adj[y].push_back(x);
    }
    place_segments(1, 1, (int)adj[1].size() + 2);
    for (int i = 1; i <= n; i++) {
      printf("%d %d\n", L[i], R[i]);
    }
    for (int i = 1; i <= n; i++) {
      adj[i].clear();
    }
  }
}
