#include <bits/stdc++.h>
using namespace std;
struct input {
  long long int a;
};
const long long int M = 1e9 + 7;
const long long int N = 1e5;
template <class T>
T gcd(const T a, const T b) {
  return (b ? gcd<T>(b, a % b) : a);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long int n, m, i, j, k, temp, x, y, z, t, p;
  cin >> n;
  vector<long long int> v[n + 1];
  for (i = 1;; i++) {
    if ((i * (i + 1)) / 2 > n) break;
  }
  j = i;
  long long int cur = 1;
  for (i = 2; i <= j; i++) {
    for (k = 1; k <= i - 1; k++) {
      v[i].push_back(cur), v[k].push_back(cur);
      cur++;
    }
  }
  cout << j << endl;
  for (i = 1; i <= j; i++) {
    for (auto& x : v[i]) cout << x << " ";
    cout << endl;
  }
  return 0;
}
