#include <bits/stdc++.h>
int l[150], ans, n;
int a[1111][1111];
int C(int x) { return (x * (x - 1) / 2); }
int main() {
  int i, j, k, r, t;
  k = 2;
  l[0] = 0;
  l[1] = 0;
  while (1) {
    l[k] = C(k);
    if (C(k) > 10000) break;
    k++;
  }
  k++;
  scanf("%d", &n);
  for (i = 0; i < k; i++) {
    if (n < l[i]) {
      ans = i - 1;
      break;
    }
  }
  printf("%d\n", ans);
  t = l[ans];
  a[0][0] = 1;
  a[0][1] = 2;
  a[1][0] = 1;
  a[1][1] = 3;
  a[2][0] = 2;
  a[2][1] = 3;
  k = 4;
  for (i = 4; i <= ans; i++) {
    for (j = 0; j < i - 1; j++) {
      a[i - 1][j] = k + j;
    }
    for (j = 0; j < i - 1; j++) {
      a[j][i - 2] = k + j;
    }
    k += j;
  }
  for (i = 0; i < ans; i++) {
    for (j = 0; j < ans - 1; j++) {
      printf("%d ", a[i][j]);
    }
    printf("\n");
  }
  scanf(" ");
  return 0;
}
