#include <bits/stdc++.h>
using namespace std;
const int MX = 2000;
int n, b, e;
vector<int> adjList[MX];
int treeSize[MX];
int a[MX];
int ai;
void addA(int root, int parent, int depth) {
  cout << root + 1 << " " << parent + 1 << " " << a[ai] - depth << endl;
  depth = a[ai++];
  for (int i = int(0); i < int(adjList[root].size()); i++) {
    int v = adjList[root][i];
    if (v == parent) continue;
    addA(v, root, depth);
  }
}
int dfs(int root, int parent = -1) {
  treeSize[root] = 1;
  for (int i = int(0); i < int(adjList[root].size()); i++) {
    int v = adjList[root][i];
    if (v == parent) continue;
    treeSize[root] += dfs(v, root);
  }
  return treeSize[root];
}
int getCentroid(int root, int parent = -1) {
  bool cent = 1;
  int heavy = -1;
  for (int i = int(0); i < int(adjList[root].size()); i++) {
    int v = adjList[root][i];
    if (v == parent) continue;
    if (treeSize[v] > n / 2) cent = 0;
    if (heavy == -1 || treeSize[v] > treeSize[heavy]) heavy = v;
  }
  if (cent) return root;
  return getCentroid(heavy, root);
}
int getCentroid() {
  dfs(0);
  return getCentroid(0);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n;
  for (int i = int(0); i < int(n - 1); i++)
    cin >> b >> e, b--, e--, adjList[b].push_back(e), adjList[e].push_back(b);
  if (n == 1) return 0;
  if (n == 2) {
    cout << "1 2 1" << endl;
    return 0;
  }
  int cent = getCentroid();
  dfs(cent);
  priority_queue<pair<int, vector<int>>, vector<pair<int, vector<int>>>,
                 greater<pair<int, vector<int>>>>
      groups;
  for (int i = int(0); i < int(adjList[cent].size()); i++) {
    int v = adjList[cent][i];
    groups.push({treeSize[v], {v}});
  }
  while (groups.size() >= 3) {
    auto p1 = groups.top();
    groups.pop();
    auto p2 = groups.top();
    groups.pop();
    p2.first += p1.first;
    p2.second.insert(p2.second.end(), p1.second.begin(), p1.second.end());
    groups.push(p2);
  }
  auto groupa = groups.top();
  groups.pop();
  auto groupb = groups.top();
  groups.pop();
  for (int i = int(0); i < int(groupa.first); i++) a[i] = i + 1;
  ai = 0;
  for (int i = int(0); i < int(groupa.second.size()); i++) {
    int v = groupa.second[i];
    addA(v, cent, 0);
  }
  for (int i = int(0); i < int(groupb.first); i++)
    a[i] = (i + 1) * (groupa.first + 1);
  ai = 0;
  for (int i = int(0); i < int(groupb.second.size()); i++) {
    int v = groupb.second[i];
    addA(v, cent, 0);
  }
}
