#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int>> G[200005];
vector<int> ans[200005];
void dfs(int n, int p, int dayp) {
  int k = 1;
  for (auto z : G[n]) {
    if (z.first != p) {
      if (k == dayp) k++;
      ans[k].push_back(z.second);
      dfs(z.first, n, k);
      k++;
    }
  }
}
int main() {
  int n, i, j, t;
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (i = 0; i < n - 1; i++) {
    cin >> j >> t;
    G[j].push_back({t, i + 1});
    G[t].push_back({j, i + 1});
  }
  dfs(1, -1, -1);
  int day;
  for (day = 1; day < 200005; day++)
    if (ans[day].empty()) break;
  day--;
  cout << day << '\n';
  for (i = 1; i < day + 1; i++) {
    cout << ans[i].size() << " ";
    for (auto z : ans[i]) cout << z << " ";
    cout << '\n';
  }
  return 0;
}
