#include <stdio.h>
#include <stdlib.h>

void print_set(int* x, int n);
void procedure_b(int* x, int n);


int main() {
  int n, i;
  int* x;
  scanf("%d", &n);
  x = malloc(sizeof(int)*n);
  if(x == NULL) exit(EXIT_FAILURE);
  for(i=0; i<n; ++i) x[i] = 0;
  procedure_b(x, n);
  free(x);
  return 0;
}

void procedure_b(int* x, int n) {
  int i,j,y;
  print_set(x, n);
  for(j=0; j<n; ++j) {
    if(x[j]==1) {
      i=j;
      break;
    }
  }
  if(i==0) return;
  for(j=0; j<n; ++j) {
    if(j==i) return;
    x[j]=1;
    procedure_b(x, n);
    x[j]=0;
  }
  return;
}

void print_set(int* x, int n) {
  int i;
  for(i=0; i<n; ++i) {
    if(x[i]==1) {
      printf("%d ", i+1);
    }
  }
  printf("\n");
  return;
}

