#include <bits/stdc++.h>
using namespace std;
int n;
vector<short> g[10003];
int main() {
  scanf("%d", &n);
  int maxi;
  for (maxi = 1; ((maxi * maxi - maxi) >> 1) <= n; maxi++)
    ;
  maxi--;
  int end = 1;
  int i, j;
  for (i = 1; i < maxi; i++) {
    for (j = 0; j < maxi - i; j++) g[i].push_back(end + j);
    for (j = i + 1; j <= maxi; j++) g[j].push_back(end + (j - i - 1));
    end += maxi - i;
  }
  printf("%d\n", maxi);
  for (i = 1; i <= maxi; i++) {
    printf("%d", (int)g[i][0]);
    for (j = 1; j < g[i].size(); j++) printf(" %d", (int)g[i][j]);
    printf("\n");
  }
  return 0;
}
