#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > adj_lis;
vector<pair<int, int> > ans;
pair<int, int> a[100009];
int main() {
  int n;
  scanf("%d", &n);
  adj_lis.resize(n + 1);
  for (int i = int(0); i <= int(n - 2); i++) {
    scanf("%d", &a[i].first);
    scanf("%d", &a[i].second);
    adj_lis[a[i].first].push_back(i);
    adj_lis[a[i].second].push_back(i);
  }
  for (int i = int(1); i <= int(n); i++) {
    for (int j = int(1); j <= int(adj_lis[i].size() - 1); j++) {
      ans.push_back(pair<int, int>(adj_lis[i][j - 1], adj_lis[i][j]));
    }
  }
  printf("%d\n", n - 1);
  for (int i = int(0); i <= int(n - 2); i++)
    printf("2 %d %d\n", a[i].first, a[i].second);
  for (vector<pair<int, int> >::iterator it = (ans).begin(); it != (ans).end();
       it++)
    printf("%d %d\n", it->first + 1, it->second + 1);
  return 0;
}
