#include <bits/stdc++.h>
using namespace std;
int N, M;
int arr[10005][205];
bool isBigger( int i , int j ){
// 看看 arr[i] 是否比 arr[j] 大
for ( int k = 0 ; k < M ; k++ )
if ( arr[i][k] != arr[j][k] )
return arr[i][k] > arr[j][k];
// 到這裡代表兩個完全一樣,回傳 true or false 都可
return false;
}
void arraySwap( int i , int j ){
// 交換 arr[i] 整排與 arr[j] 整排
for ( int k = 0 ; k < M ; k++ )
swap( arr[i][k], arr[j][k] );
//逐一交換
}
int main(){
cin >> N >> M;
for ( int i = 0 ; i < N ; i++ )
for ( int j = 0 ; j < M ; j++ )
cin >> arr[i][j];
for ( int i = 0 ; i < N ; i++ ){
int mPtr = i;
for ( int j = i+1 ; j < N ; j++ )
if ( isBigger( mPtr, j ) )
mPtr = j;
arraySwap( i, mPtr );
}
for ( int i = 0 ; i < N ; i++ ){
for ( int j = 0 ; j < M ; j++ )
cout << arr[i][j] << " ";
cout << endl;
}
return 0;
}