#include <bits/stdc++.h>
using namespace std;
int n;
int vis[10010];
int b[10010];
int a[210][210];
bool flag = 1;
int main() {
  scanf("%d", &n);
  if (n == 1) {
    printf("0\n");
    return 0;
  }
  if (n == 2) {
    printf("2\n");
    printf("1 2\n");
    printf("1 2\n");
    return 0;
  }
  if (n == 4) {
    printf("3\n");
    printf("1 2\n1 3\n2 3\n");
    return 0;
  }
  int pos = 0;
  for (int i = 1; i <= 1000; i++) {
    for (int j = 1; j < i; j++) b[++pos] = i - 1;
    b[++pos] = i;
    if (pos > n) break;
  }
  printf("%d\n", b[n] + 1);
  for (int i = 1; i <= b[n]; i++) printf("%d ", i), vis[i]++, a[1][i] = i;
  printf("\n");
  int cnt = b[n];
  for (int i = 2; i <= b[n] + 1; i++) {
    printf("%d ", i - 1);
    a[i][1] = i - 1;
    vis[i - 1]++;
    for (int j = 2; j <= b[n]; j++) {
      if (j > i - 1) {
        printf("%d ", ++cnt);
        a[i][j] = cnt;
        vis[cnt]++;
        continue;
      }
      for (int k = 2; k < i; k++) {
        if (vis[a[k][i - 1]] < 2) {
          vis[a[k][i - 1]]++;
          printf("%d ", a[k][i - 1]);
          a[i][j] = a[k][i - 1];
        }
      }
    }
    printf("\n");
  }
  return 0;
}
