#include <bits/stdc++.h>
using namespace std;
int M[1024][1024];
int main() {
  int n;
  scanf("%d", &n);
  int ini = 1, fim = 10000;
  int resp = -1;
  while (ini <= fim) {
    int g = (ini + fim) / 2;
    int m = (g * (g - 1)) / 2;
    if (m <= n) {
      resp = g;
      ini = g + 1;
    } else
      fim = g - 1;
  }
  n = resp;
  printf("%d\n", n);
  int tt = 1;
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++) M[i][j] = M[j][i] = tt++;
  for (int i = 0; i < n; i++) {
    bool p = true;
    for (int j = 0; j < n; j++)
      if (j != i) {
        if (!p) printf(" ");
        p = false;
        printf("%d", M[i][j]);
      }
    printf("\n");
  }
  return 0;
}
