// output of ./demo/comb/mset-perm-gray-demo.cc:
// Description:
//% All multiset permutations in minimal-change order (Lunnon's Gray code).
//% Same as: all strings with fixed content.

args: multiplicities of elements
multiplicities: ( 2, 2, 1 )  k=3  n=5
   1:  [ 1 1 2 2 3 ]
   2:  [ 2 1 1 2 3 ]  (2, 0)    [ 2 . . . ]    [ 1 1 . . ]
   3:  [ 1 2 1 2 3 ]  (0, 1)    [ . 1 . . ]    [ . 1 . . ]
   4:  [ 1 2 2 1 3 ]  (3, 2)    [ . 1 1 . ]    [ . . 2 . ]
   5:  [ 2 1 2 1 3 ]  (1, 0)    [ 2 . 1 . ]    [ 1 . 2 . ]
   6:  [ 2 2 1 1 3 ]  (2, 1)    [ 2 2 . . ]    [ . 2 2 . ]
   7:  [ 2 2 3 1 1 ]  (4, 2)    [ 2 2 2 . ]    [ . . 3 3 ]
   8:  [ 2 2 1 3 1 ]  (2, 3)    [ 2 2 . 1 ]    [ . 2 . 3 ]
   9:  [ 2 1 2 3 1 ]  (1, 2)    [ 2 . 1 1 ]    [ 1 . . 3 ]
  10:  [ 1 2 2 3 1 ]  (0, 1)    [ . 1 1 1 ]    [ . . . 3 ]
  11:  [ 1 3 2 2 1 ]  (3, 1)    [ . 3 1 1 ]    [ . 1 1 3 ]
  12:  [ 3 1 2 2 1 ]  (1, 0)    [ 4 . 1 1 ]    [ 1 1 1 3 ]
  13:  [ 3 2 1 2 1 ]  (2, 1)    [ 4 2 . 1 ]    [ 1 2 1 3 ]
  14:  [ 3 2 2 1 1 ]  (3, 2)    [ 4 2 2 . ]    [ 1 1 3 3 ]
  15:  [ 3 2 1 1 2 ]  (2, 4)    [ 4 2 . . ]    [ 1 2 2 1 ]
  16:  [ 3 1 2 1 2 ]  (1, 2)    [ 4 . 1 . ]    [ 1 1 2 1 ]
  17:  [ 1 3 2 1 2 ]  (0, 1)    [ . 3 1 . ]    [ . 1 2 1 ]
  18:  [ 1 3 1 2 2 ]  (2, 3)    [ . 3 . . ]    [ . 1 1 1 ]
  19:  [ 3 1 1 2 2 ]  (1, 0)    [ 4 . . . ]    [ 1 1 1 1 ]
  20:  [ 1 1 3 2 2 ]  (0, 2)    [ . . 2 . ]    [ . . 1 1 ]
  21:  [ 1 1 2 3 2 ]  (2, 3)    [ . . . 1 ]    [ . . . 1 ]
  22:  [ 2 1 1 3 2 ]  (2, 0)    [ 2 . . 1 ]    [ 1 1 . 1 ]
  23:  [ 1 2 1 3 2 ]  (0, 1)    [ . 1 . 1 ]    [ . 1 . 1 ]
  24:  [ 1 2 3 1 2 ]  (3, 2)    [ . 1 2 . ]    [ . . 2 1 ]
  25:  [ 2 1 3 1 2 ]  (1, 0)    [ 2 . 2 . ]    [ 1 . 2 1 ]
  26:  [ 2 3 1 1 2 ]  (2, 1)    [ 2 3 . . ]    [ . 2 2 1 ]
  27:  [ 2 3 2 1 1 ]  (4, 2)    [ 2 3 2 . ]    [ . 1 3 3 ]
  28:  [ 2 3 1 2 1 ]  (2, 3)    [ 2 3 . 1 ]    [ . 2 1 3 ]
  29:  [ 2 1 3 2 1 ]  (1, 2)    [ 2 . 2 1 ]    [ 1 . 1 3 ]
  30:  [ 1 2 3 2 1 ]  (0, 1)    [ . 1 2 1 ]    [ . . 1 3 ]
ct=30
