// output of ./demo/comb/cayley-perm-demo.cc:
// Description:
//% Cayley permutations:  Length-n words such that all elements
//%   from 0 to the maximum value occur at least once.
//% Same as: permutations of the (RGS for) set partitions of n.
//% Same as: weak orders on n elements (weak orders are
//%   relations that are transitive and complete).
//% Same as: preferential arrangements of n labeled elements.
//% Generation such that the major order is by content, and minor order lexicographic.
//% Cf. OEIS sequence A000670.

arg 1: 4 == n  [Length of words]  default=4
arg 2: 0 == mi  [Minimal value of max digit]  default=0
arg 3: 3 == mx  [Max allowed digit]  default=3
   1:    [ . . . . ]  0       { 0, 1, 2, 3 }
   2:    [ . . . 1 ]  1       { 0, 1, 2 } < { 3 }
   3:    [ . . 1 . ]  1       { 0, 1, 3 } < { 2 }
   4:    [ . 1 . . ]  1       { 0, 2, 3 } < { 1 }
   5:    [ 1 . . . ]  1       { 1, 2, 3 } < { 0 }
   6:    [ . . 1 1 ]  1       { 0, 1 } < { 2, 3 }
   7:    [ . 1 . 1 ]  1       { 0, 2 } < { 1, 3 }
   8:    [ . 1 1 . ]  1       { 0, 3 } < { 1, 2 }
   9:    [ 1 . . 1 ]  1       { 1, 2 } < { 0, 3 }
  10:    [ 1 . 1 . ]  1       { 1, 3 } < { 0, 2 }
  11:    [ 1 1 . . ]  1       { 2, 3 } < { 0, 1 }
  12:    [ . . 1 2 ]  2       { 0, 1 } < { 2 } < { 3 }
  13:    [ . . 2 1 ]  2       { 0, 1 } < { 3 } < { 2 }
  14:    [ . 1 . 2 ]  2       { 0, 2 } < { 1 } < { 3 }
  15:    [ . 1 2 . ]  2       { 0, 3 } < { 1 } < { 2 }
  16:    [ . 2 . 1 ]  2       { 0, 2 } < { 3 } < { 1 }
  17:    [ . 2 1 . ]  2       { 0, 3 } < { 2 } < { 1 }
  18:    [ 1 . . 2 ]  2       { 1, 2 } < { 0 } < { 3 }
  19:    [ 1 . 2 . ]  2       { 1, 3 } < { 0 } < { 2 }
  20:    [ 1 2 . . ]  2       { 2, 3 } < { 0 } < { 1 }
  21:    [ 2 . . 1 ]  2       { 1, 2 } < { 3 } < { 0 }
  22:    [ 2 . 1 . ]  2       { 1, 3 } < { 2 } < { 0 }
  23:    [ 2 1 . . ]  2       { 2, 3 } < { 1 } < { 0 }
  24:    [ . 1 1 1 ]  1       { 0 } < { 1, 2, 3 }
  25:    [ 1 . 1 1 ]  1       { 1 } < { 0, 2, 3 }
  26:    [ 1 1 . 1 ]  1       { 2 } < { 0, 1, 3 }
  27:    [ 1 1 1 . ]  1       { 3 } < { 0, 1, 2 }
  28:    [ . 1 1 2 ]  2       { 0 } < { 1, 2 } < { 3 }
  29:    [ . 1 2 1 ]  2       { 0 } < { 1, 3 } < { 2 }
  30:    [ . 2 1 1 ]  2       { 0 } < { 2, 3 } < { 1 }
  31:    [ 1 . 1 2 ]  2       { 1 } < { 0, 2 } < { 3 }
  32:    [ 1 . 2 1 ]  2       { 1 } < { 0, 3 } < { 2 }
  33:    [ 1 1 . 2 ]  2       { 2 } < { 0, 1 } < { 3 }
  34:    [ 1 1 2 . ]  2       { 3 } < { 0, 1 } < { 2 }
  35:    [ 1 2 . 1 ]  2       { 2 } < { 0, 3 } < { 1 }
  36:    [ 1 2 1 . ]  2       { 3 } < { 0, 2 } < { 1 }
  37:    [ 2 . 1 1 ]  2       { 1 } < { 2, 3 } < { 0 }
  38:    [ 2 1 . 1 ]  2       { 2 } < { 1, 3 } < { 0 }
  39:    [ 2 1 1 . ]  2       { 3 } < { 1, 2 } < { 0 }
  40:    [ . 1 2 2 ]  2       { 0 } < { 1 } < { 2, 3 }
  41:    [ . 2 1 2 ]  2       { 0 } < { 2 } < { 1, 3 }
  42:    [ . 2 2 1 ]  2       { 0 } < { 3 } < { 1, 2 }
  43:    [ 1 . 2 2 ]  2       { 1 } < { 0 } < { 2, 3 }
  44:    [ 1 2 . 2 ]  2       { 2 } < { 0 } < { 1, 3 }
  45:    [ 1 2 2 . ]  2       { 3 } < { 0 } < { 1, 2 }
  46:    [ 2 . 1 2 ]  2       { 1 } < { 2 } < { 0, 3 }
  47:    [ 2 . 2 1 ]  2       { 1 } < { 3 } < { 0, 2 }
  48:    [ 2 1 . 2 ]  2       { 2 } < { 1 } < { 0, 3 }
  49:    [ 2 1 2 . ]  2       { 3 } < { 1 } < { 0, 2 }
  50:    [ 2 2 . 1 ]  2       { 2 } < { 3 } < { 0, 1 }
  51:    [ 2 2 1 . ]  2       { 3 } < { 2 } < { 0, 1 }
  52:    [ . 1 2 3 ]  3       { 0 } < { 1 } < { 2 } < { 3 }
  53:    [ . 1 3 2 ]  3       { 0 } < { 1 } < { 3 } < { 2 }
  54:    [ . 2 1 3 ]  3       { 0 } < { 2 } < { 1 } < { 3 }
  55:    [ . 2 3 1 ]  3       { 0 } < { 3 } < { 1 } < { 2 }
  56:    [ . 3 1 2 ]  3       { 0 } < { 2 } < { 3 } < { 1 }
  57:    [ . 3 2 1 ]  3       { 0 } < { 3 } < { 2 } < { 1 }
  58:    [ 1 . 2 3 ]  3       { 1 } < { 0 } < { 2 } < { 3 }
  59:    [ 1 . 3 2 ]  3       { 1 } < { 0 } < { 3 } < { 2 }
  60:    [ 1 2 . 3 ]  3       { 2 } < { 0 } < { 1 } < { 3 }
  61:    [ 1 2 3 . ]  3       { 3 } < { 0 } < { 1 } < { 2 }
  62:    [ 1 3 . 2 ]  3       { 2 } < { 0 } < { 3 } < { 1 }
  63:    [ 1 3 2 . ]  3       { 3 } < { 0 } < { 2 } < { 1 }
  64:    [ 2 . 1 3 ]  3       { 1 } < { 2 } < { 0 } < { 3 }
  65:    [ 2 . 3 1 ]  3       { 1 } < { 3 } < { 0 } < { 2 }
  66:    [ 2 1 . 3 ]  3       { 2 } < { 1 } < { 0 } < { 3 }
  67:    [ 2 1 3 . ]  3       { 3 } < { 1 } < { 0 } < { 2 }
  68:    [ 2 3 . 1 ]  3       { 2 } < { 3 } < { 0 } < { 1 }
  69:    [ 2 3 1 . ]  3       { 3 } < { 2 } < { 0 } < { 1 }
  70:    [ 3 . 1 2 ]  3       { 1 } < { 2 } < { 3 } < { 0 }
  71:    [ 3 . 2 1 ]  3       { 1 } < { 3 } < { 2 } < { 0 }
  72:    [ 3 1 . 2 ]  3       { 2 } < { 1 } < { 3 } < { 0 }
  73:    [ 3 1 2 . ]  3       { 3 } < { 1 } < { 2 } < { 0 }
  74:    [ 3 2 . 1 ]  3       { 2 } < { 3 } < { 1 } < { 0 }
  75:    [ 3 2 1 . ]  3       { 3 } < { 2 } < { 1 } < { 0 }
 ct=75
