#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int I(int k)
{
return k%3+2*((k/3)%2)*(1-k%3);
}
int J(int k)
{
return k/3;
}
void sort(int M[4][4])
{
for(int b = 0, e = 11; b != e; ++b)
for(int k = e, j = k--; j != b; j = k--)
if (M[I(j)][J(j)] < M[I(k)][J(k)])
{
int t = M[I(j)][J(j)];
M[I(j)][J(j)] = M[I(k)][J(k)];
M[I(k)][J(k)] = t;
}
}
int main()
{
int A[4][4];
for(int i = 0; i < 4; ++i)
for(int j = 0; j < 4; ++j)
for(int i = 0; i < 4; ++i)
{
for(int j
= 0; j
< 4; ++j
) printf("%2d ",A
[i
][j
]); }
sort(A);
for(int i = 0; i < 4; ++i)
{
for(int j
= 0; j
< 4; ++j
) printf("%2d ",A
[i
][j
]); }
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCmludCBJKGludCBrKQp7CiAgICByZXR1cm4gayUzKzIqKChrLzMpJTIpKigxLWslMyk7Cn0KCmludCBKKGludCBrKQp7CiAgICByZXR1cm4gay8zOwp9Cgp2b2lkIHNvcnQoaW50IE1bNF1bNF0pCnsKICAgIGZvcihpbnQgYiA9IDAsIGUgPSAxMTsgYiAhPSBlOyArK2IpCiAgICAgICAgZm9yKGludCBrID0gZSwgaiA9IGstLTsgaiAhPSBiOyBqID0gay0tKQogICAgICAgICAgICBpZiAoTVtJKGopXVtKKGopXSA8IE1bSShrKV1bSihrKV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCB0ID0gTVtJKGopXVtKKGopXTsKICAgICAgICAgICAgICAgIE1bSShqKV1bSihqKV0gPSBNW0koayldW0ooayldOwogICAgICAgICAgICAgICAgTVtJKGspXVtKKGspXSA9IHQ7CiAgICAgICAgICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBzcmFuZCh0aW1lKDApKTsKICAgIGludCBBWzRdWzRdOwogICAgZm9yKGludCBpID0gMDsgaSA8IDQ7ICsraSkKICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgNDsgKytqKQogICAgICAgICAgICBBW2ldW2pdID0gcmFuZCgpJTIwOwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCA0OyArK2kpCiAgICB7CiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IDQ7ICsraikgcHJpbnRmKCIlMmQgIixBW2ldW2pdKTsKICAgICAgICBwdXRzKCIiKTsKICAgIH0KICAgIHB1dHMoIiIpOwogICAgcHV0cygiIik7CgogICAgc29ydChBKTsKCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgNDsgKytpKQogICAgewogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCA0OyArK2opIHByaW50ZigiJTJkICIsQVtpXVtqXSk7CiAgICAgICAgcHV0cygiIik7CiAgICB9Cgp9Cg==