#include <bits/stdc++.h>
using namespace std;
struct Edge {
  int nxt, to, dis;
} e[2005];
int hd[1005], e_cnt;
void add(int u, int v) {
  e[++e_cnt] = (Edge){hd[u], v};
  hd[u] = e_cnt;
}
int n, cen, siz[1005], p[1005], tot[1005], num[1005], cnt, c[1005];
int fp(int x) { return x == p[x] ? x : p[x] = fp(p[x]); }
void dfs1(int u, int r) {
  siz[u] = 1;
  bool flg = true;
  for (int i = hd[u]; i; i = e[i].nxt)
    if (e[i].to != r) {
      dfs1(e[i].to, u);
      siz[u] += siz[e[i].to];
      if (siz[e[i].to] * 2 > n) flg = false;
    }
  if ((n - siz[u]) * 2 > n) flg = false;
  if (flg) cen = u;
}
struct cmp {
  bool operator()(int a, int b) { return tot[a] > tot[b]; }
};
void dfs2(int u, int r, int nl, int nr) {
  for (int i = hd[u]; i; i = e[i].nxt)
    if (e[i].to != r && c[e[i].to] != 1) {
      e[i].dis = nl;
      dfs2(e[i].to, u, 1, siz[e[i].to] - 1);
      nl += siz[e[i].to];
    }
}
void dfs3(int u, int r, int nl, int nr) {
  for (int i = hd[u]; i; i = e[i].nxt)
    if (e[i].to != r && c[e[i].to]) {
      e[i].dis = (cnt + 1) * nl;
      dfs3(e[i].to, u, 1, siz[e[i].to] - 1);
      nl += siz[e[i].to];
    }
}
int main() {
  cin >> n;
  if (n == 1) return 0;
  if (n == 2) {
    cout << "1 2 1";
    return 0;
  }
  for (int i = 1; i <= n - 1; i++) {
    int u, v;
    cin >> u >> v;
    add(u, v);
    add(v, u);
  }
  dfs1(1, 0);
  dfs1(cen, 0);
  priority_queue<int, vector<int>, cmp> q;
  for (int i = hd[cen]; i; i = e[i].nxt) {
    tot[e[i].to] = siz[e[i].to];
    q.push(e[i].to);
    p[e[i].to] = e[i].to;
  }
  while (q.size() > 2) {
    int p1 = q.top();
    q.pop();
    int p2 = q.top();
    q.pop();
    p[p2] = p1;
    tot[p1] += tot[p2];
    q.push(p1);
  }
  memset(c, -1, sizeof c);
  for (int i = hd[cen]; i; i = e[i].nxt) {
    c[e[i].to] = fp(e[i].to) == q.top();
    if (!c[e[i].to]) cnt += siz[e[i].to];
  }
  dfs2(cen, 0, 1, cnt);
  dfs3(cen, 0, 1, n - 1 - cnt);
  for (int i = 1; i <= n; i++)
    for (int j = hd[i]; j; j = e[j].nxt)
      if (e[j].dis) cout << i << ' ' << e[j].to << ' ' << e[j].dis << '\n';
  return 0;
}
