#include <bits/stdc++.h>
using namespace std;
const int mxx = 1e6 + 60;
int l[mxx], r[mxx], chl[mxx], chr[mxx];
int n;
vector<int> v[mxx];
void fil(int nod, int par) {
  l[nod] = 0, r[nod] = 1;
  int curl = -1, curr = +1;
  for (auto x : v[nod]) {
    if (x == par) continue;
    fil(x, nod);
    r[x] = curr;
    r[nod]++;
    curr++;
    l[x] = curl - chr[x];
    curl = l[x] + chl[x] - 1;
  }
  chl[nod] = curl + 1;
  chr[nod] = curr - 1;
}
void build(int nod, int par) {
  for (auto x : v[nod]) {
    if (x == par) continue;
    l[x] += l[nod];
    r[x] += l[nod];
    build(x, nod);
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i < n - 1; i++) {
    int a, b;
    cin >> a >> b;
    v[a].push_back(b);
    v[b].push_back(a);
  }
  fil(1, 0);
  build(1, 0);
  int mn = mxx;
  for (int i = 1; i <= n; i++) {
    mn = min(mn, l[i]);
  }
  mn = 1 - mn;
  for (int i = 1; i <= n; i++) {
    cout << l[i] + mn << ' ' << r[i] + mn << endl;
  }
  return 0;
}
