<?php
function uintprint5($a)
{
  return sprintf("%u %u %u %u %u", $a[0], $a[1], $a[2], $a[3], $a[4]);
}

function sort5(&$a)
{
  $mask = gmp_init('29c05310a60c4c15182838506620ca8194232817102d405a10b40c68109c2133026444c851908b8116222c28584630887110d421a303444688', 16);
  $bits = (intval($a[0] <= $a[1])     ) | (intval($a[1] <= $a[2]) << 1) | (intval($a[2] <= $a[3]) << 2) | (intval($a[3] <= $a[4]) << 3)
          | (intval($a[0] <= $a[2]) << 4) | (intval($a[1] <= $a[3]) << 5) | (intval($a[2] <= $a[4]) << 6)
          | (intval($a[0] <= $a[3]) << 7) | (intval($a[1] <= $a[4]) << 8) | (intval($a[0] <= $a[4]) << 9);
  $b = array(
    0x000 => 0,
    0x001 => 228,
    0x002 => 303,
    0x004 => 168,
    0x005 => 396,
    0x008 => 57,
    0x009 => 285,
    0x00a => 360,
    0x011 => 75,
    0x012 => 150,
    0x013 => 378,
    0x019 => 132,
    0x01a => 207,
    0x01b => 435,
    0x022 => 246,
    0x024 => 111,
    0x026 => 414,
    0x032 => 93,
    0x044 => 153,
    0x045 => 381,
    0x048 => 42,
    0x049 => 270,
    0x04c => 210,
    0x04d => 438,
    0x064 => 96,
    0x085 => 339,
    0x091 => 18,
    0x093 => 321,
    0x095 => 186,
    0x0a4 => 54,
    0x0a5 => 282,
    0x0a6 => 357,
    0x0b2 => 36,
    0x0b3 => 264,
    0x0b5 => 129,
    0x0b6 => 204,
    0x0b7 => 432,
    0x0c5 => 324,
    0x0e4 => 39,
    0x0e5 => 267,
    0x10a => 345,
    0x11a => 192,
    0x122 => 231,
    0x126 => 399,
    0x12a => 288,
    0x132 => 78,
    0x13a => 135,
    0x148 => 27,
    0x14a => 330,
    0x14c => 195,
    0x164 => 81,
    0x166 => 384,
    0x16a => 273,
    0x16c => 138,
    0x16e => 441,
    0x1a6 => 342,
    0x1b2 => 21,
    0x1b6 => 189,
    0x1e4 => 24,
    0x1e6 => 327,
    0x219 => 117,
    0x21b => 420,
    0x249 => 255,
    0x24d => 423,
    0x259 => 102,
    0x291 => 3,
    0x293 => 306,
    0x295 => 171,
    0x299 => 60,
    0x29b => 363,
    0x2b3 => 249,
    0x2b5 => 114,
    0x2b7 => 417,
    0x2c5 => 309,
    0x2cd => 366,
    0x2d5 => 156,
    0x2d9 => 45,
    0x2dd => 213,
    0x2e5 => 252,
    0x2f5 => 99,
    0x31a => 177,
    0x31b => 405,
    0x33a => 120,
    0x348 => 12,
    0x349 => 240,
    0x34a => 315,
    0x34c => 180,
    0x34d => 408,
    0x359 => 87,
    0x35a => 162,
    0x35b => 390,
    0x36a => 258,
    0x36c => 123,
    0x36e => 426,
    0x37a => 105,
    0x39b => 348,
    0x3b2 => 6,
    0x3b3 => 234,
    0x3b6 => 174,
    0x3b7 => 402,
    0x3ba => 63,
    0x3bb => 291,
    0x3cd => 351,
    0x3d9 => 30,
    0x3db => 333,
    0x3dd => 198,
    0x3e4 => 9,
    0x3e5 => 237,
    0x3e6 => 312,
    0x3ec => 66,
    0x3ed => 294,
    0x3ee => 369,
    0x3f5 => 84,
    0x3f6 => 159,
    0x3f7 => 387,
    0x3fa => 48,
    0x3fb => 276,
    0x3fd => 141,
    0x3fe => 216,
    0x3ff => 444,
  );
  $mask >>= $b[$bits];
  $i4 = gmp_intval(gmp_mod($mask,8));
  $mask >>= 3;
  $i3 = gmp_intval(gmp_mod($mask,8));
  $mask >>= 3;
  $i2 = gmp_intval(gmp_mod($mask,8));
  $mask >>= 3;
  $i1 = gmp_intval(gmp_mod($mask,8));
  $mask >>= 3;
  $i0 = gmp_intval(gmp_mod($mask,8));
  $tmp = array($a[$i0], $a[$i1], $a[$i2], $a[$i3], $a[$i4]);
  $a = $tmp;
}
 
$mutations = array(
array(0, 1, 2, 3, 4), 
array(0, 1, 2, 4, 3), 
array(0, 1, 3, 2, 4), 
array(0, 1, 3, 4, 2), 
array(0, 1, 4, 2, 3), 
array(0, 1, 4, 3, 2), 
array(0, 2, 1, 3, 4), 
array(0, 2, 1, 4, 3), 
array(0, 2, 3, 1, 4), 
array(0, 2, 3, 4, 1), 
array(0, 2, 4, 1, 3), 
array(0, 2, 4, 3, 1), 
array(0, 3, 1, 2, 4), 
array(0, 3, 1, 4, 2), 
array(0, 3, 2, 1, 4), 
array(0, 3, 2, 4, 1), 
array(0, 3, 4, 1, 2), 
array(0, 3, 4, 2, 1), 
array(0, 4, 1, 2, 3), 
array(0, 4, 1, 3, 2), 
array(0, 4, 2, 1, 3), 
array(0, 4, 2, 3, 1), 
array(0, 4, 3, 1, 2), 
array(0, 4, 3, 2, 1), 
array(1, 0, 2, 3, 4), 
array(1, 0, 2, 4, 3), 
array(1, 0, 3, 2, 4), 
array(1, 0, 3, 4, 2), 
array(1, 0, 4, 2, 3), 
array(1, 0, 4, 3, 2), 
array(1, 2, 0, 3, 4), 
array(1, 2, 0, 4, 3), 
array(1, 2, 3, 0, 4), 
array(1, 2, 3, 4, 0), 
array(1, 2, 4, 0, 3), 
array(1, 2, 4, 3, 0), 
array(1, 3, 0, 2, 4), 
array(1, 3, 0, 4, 2), 
array(1, 3, 2, 0, 4), 
array(1, 3, 2, 4, 0), 
array(1, 3, 4, 0, 2), 
array(1, 3, 4, 2, 0), 
array(1, 4, 0, 2, 3), 
array(1, 4, 0, 3, 2), 
array(1, 4, 2, 0, 3), 
array(1, 4, 2, 3, 0), 
array(1, 4, 3, 0, 2), 
array(1, 4, 3, 2, 0), 
array(2, 0, 1, 3, 4), 
array(2, 0, 1, 4, 3), 
array(2, 0, 3, 1, 4), 
array(2, 0, 3, 4, 1), 
array(2, 0, 4, 1, 3), 
array(2, 0, 4, 3, 1), 
array(2, 1, 0, 3, 4), 
array(2, 1, 0, 4, 3), 
array(2, 1, 3, 0, 4), 
array(2, 1, 3, 4, 0), 
array(2, 1, 4, 0, 3), 
array(2, 1, 4, 3, 0), 
array(2, 3, 0, 1, 4), 
array(2, 3, 0, 4, 1), 
array(2, 3, 1, 0, 4), 
array(2, 3, 1, 4, 0), 
array(2, 3, 4, 0, 1), 
array(2, 3, 4, 1, 0), 
array(2, 4, 0, 1, 3), 
array(2, 4, 0, 3, 1), 
array(2, 4, 1, 0, 3), 
array(2, 4, 1, 3, 0), 
array(2, 4, 3, 0, 1), 
array(2, 4, 3, 1, 0), 
array(3, 0, 1, 2, 4), 
array(3, 0, 1, 4, 2), 
array(3, 0, 2, 1, 4), 
array(3, 0, 2, 4, 1), 
array(3, 0, 4, 1, 2), 
array(3, 0, 4, 2, 1), 
array(3, 1, 0, 2, 4), 
array(3, 1, 0, 4, 2), 
array(3, 1, 2, 0, 4), 
array(3, 1, 2, 4, 0), 
array(3, 1, 4, 0, 2), 
array(3, 1, 4, 2, 0), 
array(3, 2, 0, 1, 4), 
array(3, 2, 0, 4, 1), 
array(3, 2, 1, 0, 4), 
array(3, 2, 1, 4, 0), 
array(3, 2, 4, 0, 1), 
array(3, 2, 4, 1, 0), 
array(3, 4, 0, 1, 2), 
array(3, 4, 0, 2, 1), 
array(3, 4, 1, 0, 2), 
array(3, 4, 1, 2, 0), 
array(3, 4, 2, 0, 1), 
array(3, 4, 2, 1, 0), 
array(4, 0, 1, 2, 3), 
array(4, 0, 1, 3, 2), 
array(4, 0, 2, 1, 3), 
array(4, 0, 2, 3, 1), 
array(4, 0, 3, 1, 2), 
array(4, 0, 3, 2, 1), 
array(4, 1, 0, 2, 3), 
array(4, 1, 0, 3, 2), 
array(4, 1, 2, 0, 3), 
array(4, 1, 2, 3, 0), 
array(4, 1, 3, 0, 2), 
array(4, 1, 3, 2, 0), 
array(4, 2, 0, 1, 3), 
array(4, 2, 0, 3, 1), 
array(4, 2, 1, 0, 3), 
array(4, 2, 1, 3, 0), 
array(4, 2, 3, 0, 1), 
array(4, 2, 3, 1, 0), 
array(4, 3, 0, 1, 2), 
array(4, 3, 0, 2, 1), 
array(4, 3, 1, 0, 2), 
array(4, 3, 1, 2, 0), 
array(4, 3, 2, 0, 1), 
array(4, 3, 2, 1, 0), 
);

foreach($mutations as $mutation) {
    $tmp = $mutation;
    sort5($tmp);
    echo '(' . uintprint5($mutation) . ') -> (' . uintprint5($tmp) . ')' . PHP_EOL;
}
