#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > e;
pair<bool, vector<vector<int> > > hz(int lvl, int x) {
  vector<vector<int> > v;
  v.resize(lvl);
  int ix = 1;
  for (int i = 1; i < lvl; i++) {
    for (int j = 0; j < lvl - i; j++) {
      if (!x) return make_pair(false, e);
      --x;
      v[j].push_back(ix);
      v[j + i].push_back(ix++);
    }
  }
  return make_pair(true, v);
}
int main() {
  int n;
  cin >> n;
  pair<bool, vector<vector<int> > > r;
  for (int t = 3; t < 10000; t++) {
    r = hz(t, n);
    if (!r.first) {
      r = hz(t - 1, n);
      cout << r.second.size() << endl;
      for (int i = 0; i < r.second.size(); i++) {
        for (int j = 0; j < r.second[i].size(); j++) {
          cout << r.second[i][j] << " ";
        }
        cout << endl;
      }
      return 0;
    }
  }
}
