#include <stdio.h>
#include <stdlib.h> 
#define M 10
 
int g(int n, int s[], int r, int t) { return (t <= n) ? (s[t] = 1, g(n, s, r, t + r)) : 0; }
int h(int n, int s[], int r, int k) {
  return (r >= n) ? 0
                  : (s[r] == 0) ? ( printf("%-3d ", r),
                                    (k == M - 1) ? putchar('\n') : 0,
                                    g(n, s, r, r),
                                    h(n, s, r + 1, (k == M - 1) ? 0 : k + 1) )
                                : h(n, s, r + 1, k);
}

int f(int n) {
  int *s;
  return (s = calloc((n + 1), sizeof(int))) ? ( s[0] = s[1] = 1,
                                                 h(n, s, 2, 0),
                                                 free(s), 0)
                                              : 0;
}

int main() {
  int n;
  do {
    do { printf("n = "); } while (scanf("%d", &n) != 1);
  } while (!(n >= 2));
  putchar('\n');
  f(n);
  return 0;
}
/* end */
 