#include <bits/stdc++.h>
using namespace std;
long long labs(long long a) { return a < 0 ? (-a) : a; }
long long max(long long a, long long b) { return a > b ? a : b; }
long long min(long long a, long long b) { return a < b ? a : b; }
int main() {
  int n;
  cin >> n;
  int h = 1;
  vector<vector<int> > ans;
  for (int i = 0; ans.size() + (h - 1) <= n; i++) {
    ans.push_back(vector<int>());
    for (int(k) = 0; (k) < ((int)ans.size() - 1); (k)++) {
      ans[i].push_back(h);
      ans[k].push_back(h++);
    }
  }
  cout << ans.size() << endl;
  for (int(i) = 0; (i) < (ans.size()); (i)++) {
    for (int(j) = 0; (j) < (ans[i].size()); (j)++) {
      cout << ans[i][j] << " ";
    }
    cout << endl;
  }
  return 0;
}
