#include <bits/stdc++.h>
using namespace std;
struct cycle {
  int s, a[4];
  cycle(int s = 0, int b = 0, int c = 0, int d = 0, int e = 0) : s(s) {
    a[0] = b, a[1] = c, a[2] = d, a[3] = e;
  }
};
vector<cycle> ans;
void dfs(int n) {
  if (n == 3) {
    for (int i = 0; i < 2; ++i) ans.push_back(cycle(3, 1, 2, 3));
    return;
  } else if (n == 4) {
    ans.push_back(cycle(3, 1, 2, 4)), ans.push_back(cycle(3, 2, 3, 4)),
        ans.push_back(cycle(3, 1, 3, 4)), ans.push_back(cycle(3, 1, 2, 3));
    return;
  }
  for (int i = 1; i < n - 2; ++i) ans.push_back(cycle(4, n - 1, i, n, i + 1));
  ans.push_back(cycle(3, n - 1, 1, n)),
      ans.push_back(cycle(3, n - 1, n - 2, n));
  dfs(n - 2);
}
int main() {
  int n;
  scanf("%d", &n);
  dfs(n);
  printf("%d\n", ans.size());
  for (cycle &x : ans) {
    printf("%d ", x.s);
    for (int i = 0; i < x.s; ++i) printf("%d%c", x.a[i], " \n"[i == x.s - 1]);
  }
  return 0;
}
