#include <stdio.h>
#include <inttypes.h>
#include <string.h>
void uintprint4(uint32_t *a)
{
printf("%u %u %u %u\n", a
[0], a
[1], a
[2], a
[3]); }
void sort4(uint32_t a[static 4])
{
uint64_t mask = 0x6C6361E12D2724E4;
uint8_t bits = ((a[0] <= a[1]) ) | ((a[1] <= a[2]) << 1) | ((a[2] <= a[3]) << 2)
| ((a[0] <= a[2]) << 3) | ((a[1] <= a[3]) << 4) | ((a[0] <= a[3]) << 5);
static const uint8_t b[] =
{
[0b000000] = 11,
[0b000001] = 32,
[0b000010] = 42,
[0b000100] = 22,
[0b000101] = 54,
[0b001001] = 10,
[0b001010] = 20,
[0b001011] = 47,
[0b010010] = 34,
[0b010100] = 3,
[0b010110] = 43,
[0b011010] = 1,
[0b100101] = 46,
[0b101001] = 2,
[0b101011] = 44,
[0b101101] = 24,
[0b110100] = 6,
[0b110101] = 38,
[0b110110] = 48,
[0b111010] = 4,
[0b111011] = 36,
[0b111101] = 5,
[0b111110] = 26,
[0b111111] = 45,
};
mask >>= b[bits];
uint32_t tmp[4] = {a[(mask>>6)&0b11], a[(mask>>4)&0b11], a[(mask>>2)&0b11], a[(mask)&0b11]};
memcpy(a
, tmp
, 4*sizeof(uint32_t)); }
int main(void)
{
uint32_t a[] = {0, 1, 2, 3};
uint32_t b[] = {0, 1, 3, 2};
uint32_t c[] = {0, 2, 1, 3};
uint32_t d[] = {0, 2, 3, 1};
uint32_t e[] = {0, 3, 1, 2};
uint32_t f[] = {0, 3, 2, 1};
uint32_t g[] = {1, 0, 2, 3};
uint32_t h[] = {1, 0, 3, 2};
uint32_t i[] = {1, 2, 0, 3};
uint32_t j[] = {1, 2, 3, 0};
uint32_t k[] = {1, 3, 0, 2};
uint32_t l[] = {1, 3, 2, 0};
uint32_t m[] = {2, 0, 1, 3};
uint32_t n[] = {2, 0, 3, 1};
uint32_t o[] = {2, 1, 0, 3};
uint32_t p[] = {2, 1, 3, 0};
uint32_t q[] = {2, 3, 0, 1};
uint32_t r[] = {2, 3, 1, 0};
uint32_t s[] = {3, 0, 1, 2};
uint32_t t[] = {3, 0, 2, 1};
uint32_t u[] = {3, 1, 0, 2};
uint32_t v[] = {3, 1, 2, 0};
uint32_t w[] = {3, 2, 0, 1};
uint32_t x[] = {3, 2, 1, 0};
sort4(a); sort4(b); sort4(c); sort4(d); sort4(e); sort4(f);
sort4(g); sort4(h); sort4(i); sort4(j); sort4(k); sort4(l);
sort4(m); sort4(n); sort4(o); sort4(p); sort4(q); sort4(r);
sort4(s); sort4(t); sort4(u); sort4(v); sort4(w); sort4(x);
uintprint4(a); uintprint4(b); uintprint4(c); uintprint4(d); uintprint4(e); uintprint4(f);
uintprint4(g); uintprint4(h); uintprint4(i); uintprint4(j); uintprint4(k); uintprint4(l);
uintprint4(m); uintprint4(n); uintprint4(o); uintprint4(p); uintprint4(q); uintprint4(r);
uintprint4(s); uintprint4(t); uintprint4(u); uintprint4(v); uintprint4(w); uintprint4(x);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgojaW5jbHVkZSA8c3RyaW5nLmg+Cgp2b2lkIHVpbnRwcmludDQodWludDMyX3QgKmEpCnsKICBwcmludGYoIiV1ICV1ICV1ICV1XG4iLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdKTsKfQoKdm9pZCBzb3J0NCh1aW50MzJfdCBhW3N0YXRpYyA0XSkKewogIHVpbnQ2NF90IG1hc2sgPSAweDZDNjM2MUUxMkQyNzI0RTQ7CiAgdWludDhfdCBiaXRzID0gKChhWzBdIDw9IGFbMV0pICAgICApIHwgKChhWzFdIDw9IGFbMl0pIDw8IDEpIHwgKChhWzJdIDw9IGFbM10pIDw8IDIpCiAgICAgICAgICAgICAgIHwgKChhWzBdIDw9IGFbMl0pIDw8IDMpIHwgKChhWzFdIDw9IGFbM10pIDw8IDQpIHwgKChhWzBdIDw9IGFbM10pIDw8IDUpOwogIHN0YXRpYyBjb25zdCB1aW50OF90IGJbXSA9CiAgewogICAgWzBiMDAwMDAwXSA9IDExLAogICAgWzBiMDAwMDAxXSA9IDMyLAogICAgWzBiMDAwMDEwXSA9IDQyLAogICAgWzBiMDAwMTAwXSA9IDIyLAogICAgWzBiMDAwMTAxXSA9IDU0LAogICAgWzBiMDAxMDAxXSA9IDEwLAogICAgWzBiMDAxMDEwXSA9IDIwLAogICAgWzBiMDAxMDExXSA9IDQ3LAogICAgWzBiMDEwMDEwXSA9IDM0LAogICAgWzBiMDEwMTAwXSA9IDMsCiAgICBbMGIwMTAxMTBdID0gNDMsCiAgICBbMGIwMTEwMTBdID0gMSwKICAgIFswYjEwMDEwMV0gPSA0NiwKICAgIFswYjEwMTAwMV0gPSAyLAogICAgWzBiMTAxMDExXSA9IDQ0LAogICAgWzBiMTAxMTAxXSA9IDI0LAogICAgWzBiMTEwMTAwXSA9IDYsCiAgICBbMGIxMTAxMDFdID0gMzgsCiAgICBbMGIxMTAxMTBdID0gNDgsCiAgICBbMGIxMTEwMTBdID0gNCwKICAgIFswYjExMTAxMV0gPSAzNiwKICAgIFswYjExMTEwMV0gPSA1LAogICAgWzBiMTExMTEwXSA9IDI2LAogICAgWzBiMTExMTExXSA9IDQ1LAogIH07CiAgbWFzayA+Pj0gYltiaXRzXTsKICB1aW50MzJfdCB0bXBbNF0gPSB7YVsobWFzaz4+NikmMGIxMV0sIGFbKG1hc2s+PjQpJjBiMTFdLCBhWyhtYXNrPj4yKSYwYjExXSwgYVsobWFzaykmMGIxMV19OwogIG1lbWNweShhLCB0bXAsIDQqc2l6ZW9mKHVpbnQzMl90KSk7Cn0KIAppbnQgbWFpbih2b2lkKQp7CiAgdWludDMyX3QgYVtdID0gezAsIDEsIDIsIDN9OwogIHVpbnQzMl90IGJbXSA9IHswLCAxLCAzLCAyfTsKICB1aW50MzJfdCBjW10gPSB7MCwgMiwgMSwgM307CiAgdWludDMyX3QgZFtdID0gezAsIDIsIDMsIDF9OwogIHVpbnQzMl90IGVbXSA9IHswLCAzLCAxLCAyfTsKICB1aW50MzJfdCBmW10gPSB7MCwgMywgMiwgMX07CiAgdWludDMyX3QgZ1tdID0gezEsIDAsIDIsIDN9OwogIHVpbnQzMl90IGhbXSA9IHsxLCAwLCAzLCAyfTsKICB1aW50MzJfdCBpW10gPSB7MSwgMiwgMCwgM307CiAgdWludDMyX3QgaltdID0gezEsIDIsIDMsIDB9OwogIHVpbnQzMl90IGtbXSA9IHsxLCAzLCAwLCAyfTsKICB1aW50MzJfdCBsW10gPSB7MSwgMywgMiwgMH07CiAgdWludDMyX3QgbVtdID0gezIsIDAsIDEsIDN9OwogIHVpbnQzMl90IG5bXSA9IHsyLCAwLCAzLCAxfTsKICB1aW50MzJfdCBvW10gPSB7MiwgMSwgMCwgM307CiAgdWludDMyX3QgcFtdID0gezIsIDEsIDMsIDB9OwogIHVpbnQzMl90IHFbXSA9IHsyLCAzLCAwLCAxfTsKICB1aW50MzJfdCByW10gPSB7MiwgMywgMSwgMH07CiAgdWludDMyX3Qgc1tdID0gezMsIDAsIDEsIDJ9OwogIHVpbnQzMl90IHRbXSA9IHszLCAwLCAyLCAxfTsKICB1aW50MzJfdCB1W10gPSB7MywgMSwgMCwgMn07CiAgdWludDMyX3QgdltdID0gezMsIDEsIDIsIDB9OwogIHVpbnQzMl90IHdbXSA9IHszLCAyLCAwLCAxfTsKICB1aW50MzJfdCB4W10gPSB7MywgMiwgMSwgMH07CgogIHNvcnQ0KGEpOyBzb3J0NChiKTsgc29ydDQoYyk7IHNvcnQ0KGQpOyBzb3J0NChlKTsgc29ydDQoZik7CiAgc29ydDQoZyk7IHNvcnQ0KGgpOyBzb3J0NChpKTsgc29ydDQoaik7IHNvcnQ0KGspOyBzb3J0NChsKTsKICBzb3J0NChtKTsgc29ydDQobik7IHNvcnQ0KG8pOyBzb3J0NChwKTsgc29ydDQocSk7IHNvcnQ0KHIpOwogIHNvcnQ0KHMpOyBzb3J0NCh0KTsgc29ydDQodSk7IHNvcnQ0KHYpOyBzb3J0NCh3KTsgc29ydDQoeCk7IAoKICB1aW50cHJpbnQ0KGEpOyB1aW50cHJpbnQ0KGIpOyB1aW50cHJpbnQ0KGMpOyB1aW50cHJpbnQ0KGQpOyB1aW50cHJpbnQ0KGUpOyB1aW50cHJpbnQ0KGYpOwogIHVpbnRwcmludDQoZyk7IHVpbnRwcmludDQoaCk7IHVpbnRwcmludDQoaSk7IHVpbnRwcmludDQoaik7IHVpbnRwcmludDQoayk7IHVpbnRwcmludDQobCk7CiAgdWludHByaW50NChtKTsgdWludHByaW50NChuKTsgdWludHByaW50NChvKTsgdWludHByaW50NChwKTsgdWludHByaW50NChxKTsgdWludHByaW50NChyKTsKICB1aW50cHJpbnQ0KHMpOyB1aW50cHJpbnQ0KHQpOyB1aW50cHJpbnQ0KHUpOyB1aW50cHJpbnQ0KHYpOyB1aW50cHJpbnQ0KHcpOyB1aW50cHJpbnQ0KHgpOyAKCiAgcmV0dXJuIDA7Cn0=