HEX := proc() option remember; local orbit, orbits, idx2, idx3, d2, d3, pos, interl, rot, entry, refl; orbits := {}; for idx2 from 2^6 to 2*2^6-1 do for idx3 from 3^6 to 2*3^6-1 do d2 := convert(idx2, base, 2); d3 := convert(idx3, base, 3); interl := []; for pos to 6 do interl := [op(interl), d2[pos], d3[pos]]; od; orbit := {}; for rot from 0 to 11 by 2 do entry := [seq(interl[q], q=1+rot..12), seq(interl[q], q=1..rot)]; orbit := {op(orbit), entry}; od; for refl from 0 to 11 by 4 do entry := [seq(interl[q], q=1+refl..12), seq(interl[q], q=1..refl)]; orbit := {op(orbit), [entry[1], seq(entry[12-q], q=0..10)], [entry[3], entry[2], entry[1], seq(entry[12-q], q=0..8)]}; od; orbits := {op(orbits), orbit}; od; od; nops(orbits); end; X := 1/12*(6^6+2*6+2*6^2+6^3+3*2^4*3^3+3*2^3*3^4);