#include <bits/stdc++.h>
using namespace std;
struct tree {
  int lf;
  int rt;
  int we;
} a[2000010];
int v[2000010];
int main() {
  int n;
  scanf("%d", &n);
  for (int j = 0; j < n - 1; j++) {
    scanf("%d%d", &a[j].lf, &a[j].rt);
    a[j].we = -1;
    v[a[j].lf]++;
    v[a[j].rt]++;
  }
  int maxi = 0, ans = -1, p = 0;
  for (int j = 0; j < 2000010; j++) {
    if (maxi < v[j]) {
      maxi = v[j];
      ans = j;
    }
  }
  for (int j = 0; j < n - 1; j++)
    if ((a[j].lf == ans || a[j].rt == ans) && a[j].we == -1) a[j].we = p++;
  for (int j = 0; j < n - 1; j++)
    if (a[j].we == -1) a[j].we = p++;
  for (int j = 0; j < n - 1; j++) printf("%d\n", a[j].we);
  return 0;
}
