#include<iostream>
#include<stdio.h>
#include<vector>
#include<time.h>
#include<stdlib.h>
#include<set>
using namespace std;
namespace sortspace{
int input[10][10];
int n,m;
struct myComp
{
bool operator()(const int& a,const int& b) const{
int ai=a/m,aj=a%m;
int bi=b/m,bj=b%m;
if(input[ai][aj]!=input[bi][bj])
return input[ai][aj]<input[bi][bj];
else
return a<b;
}
};
void twoDto1D()
{
set<int,myComp> st;
st.insert(0);
int top,i,j;
while(!st.empty())
{
top=*(st.begin());
//cout<<top<<"\n";
st.erase(st.begin());
i=top/m;
j=top%m;
cout<<input[i][j]<<" ";
if(i+1<n){
//cout<<(i+1)*m+j<<"\n";
st.insert((i+1)*m+j);
}
if(j+1<m){
st.insert(i*m+j+1);
//cout<<(i*m+j+1)<<"\n";
}
}
}
};
int main()
{
using namespace sortspace;
n=4,m=3;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>input[i][j];
twoDto1D();
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8dGltZS5oPgojaW5jbHVkZTxzdGRsaWIuaD4KI2luY2x1ZGU8c2V0Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCm5hbWVzcGFjZSBzb3J0c3BhY2V7CgogICAgaW50IGlucHV0WzEwXVsxMF07CiAgICBpbnQgbixtOwoKICAgIHN0cnVjdCBteUNvbXAKICAgIHsKICAgICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgaW50JiBhLGNvbnN0IGludCYgYikgY29uc3R7CiAgICAgICAgICAgIGludCBhaT1hL20sYWo9YSVtOwogICAgICAgICAgICBpbnQgYmk9Yi9tLGJqPWIlbTsKICAgICAgICAgICAgaWYoaW5wdXRbYWldW2FqXSE9aW5wdXRbYmldW2JqXSkKICAgICAgICAgICAgcmV0dXJuIGlucHV0W2FpXVthal08aW5wdXRbYmldW2JqXTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gYTxiOwogICAgICAgIH0KICAgIH07CiAgICB2b2lkIHR3b0R0bzFEKCkKICAgIHsKICAgICAgICBzZXQ8aW50LG15Q29tcD4gc3Q7CiAgICAgICAgc3QuaW5zZXJ0KDApOwogICAgICAgIGludCB0b3AsaSxqOwogICAgICAgIHdoaWxlKCFzdC5lbXB0eSgpKQogICAgICAgIHsKICAgICAgICAgICAgdG9wPSooc3QuYmVnaW4oKSk7CiAgICAgICAgICAgIC8vY291dDw8dG9wPDwiXG4iOwogICAgICAgICAgICBzdC5lcmFzZShzdC5iZWdpbigpKTsKICAgICAgICAgICAgaT10b3AvbTsKICAgICAgICAgICAgaj10b3AlbTsKICAgICAgICAgICAgY291dDw8aW5wdXRbaV1bal08PCIgIjsKICAgICAgICAgICAgaWYoaSsxPG4pewogICAgICAgICAgICAJLy9jb3V0PDwoaSsxKSptK2o8PCJcbiI7CiAgICAgICAgICAgIHN0Lmluc2VydCgoaSsxKSptK2opOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGorMTxtKXsKICAgICAgICAgICAgCXN0Lmluc2VydChpKm0raisxKTsKICAgICAgICAgICAgCS8vY291dDw8KGkqbStqKzEpPDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgIH0KCgp9OwoKaW50IG1haW4oKQp7CiAgICB1c2luZyBuYW1lc3BhY2Ugc29ydHNwYWNlOwogICAgIG49NCxtPTM7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgIGZvcihpbnQgaj0wO2o8bTtqKyspCiAgICAgICAgICAgIGNpbj4+aW5wdXRbaV1bal07CiAgICB0d29EdG8xRCgpOwp9Cg==