#include <bits/stdc++.h>
int main() {
  int a[140], k = 1, last;
  int i = 1, l, m, h, b[141][1000], le[141] = {0}, j;
  a[0] = 1;
  for (k = 1; a[k - 1] + k + 1 <= 10000; k++) {
    a[k] = (k + 1) + a[k - 1];
  }
  int n;
  scanf("%d", &n);
  l = 0;
  h = k - 1;
  while (l <= h) {
    m = (l + h) / 2;
    if (a[m] < n)
      l = m + 1;
    else if (a[m] == n) {
      h = m;
      break;
    } else
      h = m - 1;
  }
  h++;
  printf("%d %d\n", h + 1, a[h - 1]);
  b[0][0] = b[1][0] = 1;
  last = 1;
  le[0] = le[1] = 1;
  for (i = 1; i < h; i++) {
    for (j = 0; j < i + 1; j++) {
      b[j][le[j]++] = ++last;
      b[i + 1][le[i + 1]++] = last;
    }
  }
  for (i = 0; i <= h; i++) {
    for (j = 0; j < le[0]; j++) printf("%d ", b[i][j]);
    putchar('\n');
  }
  return 0;
}
