#include <bits/stdc++.h>
using namespace std;
struct Type {
  int m;
  vector<int> vet;
  void print() {
    vector<vector<int>> aux(m);
    for (int i = 0; i < (int)vet.size(); i++) aux[vet[i]].push_back(i);
    for (int i = 0; i < m; i++) {
      if (i) printf(",");
      printf("{");
      for (int j = 0; j < (int)aux[i].size(); j++) {
        if (j) printf(",");
        printf("%d", aux[i][j] + 1);
      }
      printf("}");
    }
    printf("\n");
  }
};
int main() {
  int n;
  scanf("%d", &n);
  vector<vector<Type>> vet(n);
  vet[0] = {{1, {0}}};
  for (int i = 1; i < n; i++)
    for (int j = 0; j < (int)vet[i - 1].size(); j++) {
      vector<Type> aux;
      for (int k = 0; k <= vet[i - 1][j].m; k++) {
        aux.push_back(vet[i - 1][j]);
        aux.back().vet.push_back(k);
        if (k == vet[i - 1][j].m) aux.back().m++;
      }
      if (j % 2 == 0)
        reverse(aux.begin() + 1, aux.end());
      else
        rotate(aux.begin(), aux.begin() + 1, aux.end());
      for (Type k : aux) vet[i].push_back(k);
    }
  printf("%d\n", (int)vet[n - 1].size());
  for (Type i : vet[n - 1]) i.print();
  return 0;
}
