#include <bits/stdc++.h>
using namespace std;
const int N = 212345;
vector<pair<int, int> > v[N];
bool used[N];
set<int> st[N];
vector<int> ans[N];
int tt = 0;
void dfs(int x) {
  used[x] = 1;
  int cnt = 1;
  for (int i = 0; i < v[x].size(); i++) {
    int to = v[x][i].first;
    int ti = v[x][i].second;
    if (!used[to]) {
      if (!st[x].count(cnt)) {
        st[to].insert(cnt);
        st[x].insert(cnt);
        ans[cnt].push_back(ti);
      } else {
        cnt++;
        st[to].insert(cnt);
        st[x].insert(cnt);
        ans[cnt].push_back(ti);
      }
      tt = max(tt, cnt);
      cnt++;
      dfs(to);
    }
  }
}
int main() {
  int n, m, i, j, x, y;
  cin >> n;
  for (i = 1; i < n; i++) {
    cin >> x >> y;
    v[x].push_back(make_pair(y, i));
    v[y].push_back(make_pair(x, i));
  }
  int id = 0, mx = 0;
  for (i = 1; i <= n; i++) {
    if (mx < v[x].size()) {
      mx = v[x].size();
      id = i;
    }
  }
  dfs(id);
  cout << tt << endl;
  for (i = 1; i <= tt; i++) {
    cout << ans[i].size() << " ";
    for (j = 0; j < ans[i].size(); j++) {
      cout << ans[i][j] << " ";
    }
    cout << endl;
  }
}
