#include <bits/stdc++.h>
using namespace std;
void ga(int N, int *A) {
  for (int i(0); i < N; i++) scanf("%d", A + i);
}
vector<int> O[(200005)];
vector<pair<int, int> > g[(200005)];
int N, X, a, b;
void dfs(int u, int p, int F) {
  int I = -1;
  for (auto &h : g[u])
    if (h.first ^ p) {
      if (++I == F) ++I;
      O[I].push_back(h.second), dfs(h.first, u, I), X = max(X, I + 1);
    }
}
int main(void) {
  scanf("%d", &N);
  for (int i(0); i < N - 1; i++)
    scanf("%d%d", &a, &b), g[--a].push_back({--b, i + 1}),
        g[b].push_back({a, i + 1});
  dfs(0, -1, (1 << 29));
  printf("%d\n", X);
  for (int i(0); i < X; i++) {
    printf("%lu", O[i].size());
    for (auto &h : O[i]) printf(" %d", h);
    puts("");
  }
  return 0;
}
