// directives #include #include #include #include #include #include #include #include #include #include #include #include // using namespace std; // macros #define FOR(i,a,b) for(int i(a);i=b;--i) #define CL(a,x) memset(a,x,sizeof(a)) #define FL(a,x) fill_n(a,sizeof(a)/sizeof(a[0]),x) #define asort(a,n) sort(a,a+n) #define vsort(v,n) sort(v.begin(), v.begin()+n) #define sz(x) x.size() #define all(x) x.begin(), x.end() #define SSTR( x ) dynamic_cast< std::ostringstream & >( ( std::ostringstream() << std::dec << x ) ).str() #define TI(x) int x = rint() #define TII(x,y) int x = rint(),y = rint() #define TIII(x,y,z) int x = rint(),y = rint(),z = rint() // typedef long long LL; typedef vector vi; int rint() { int x; if(scanf("%d",&x)!=1) return -1; return x; } LL rLL() { LL x; if(scanf("%I64d",&x)!=1) return -1; return x; } int num[100*100]; int main() { TI(N); REP(i, N*N) num[i] = rint(); sort(num, num+(N*N), greater()); REP(i, N) swap(num[i], num[i*N+i]); REP(i, N) { REP(j, N) printf("%d ", num[i*N+j]); printf("\n"); } return 0; }