#include <iostream>
using namespace std;
int main() {
    int n;cin>>n;
    int arr[n][n];
    for(int i=0;i<n;i++)
        for(int j =0;j<n;j++)
            cin>>arr[i][j];
    //开始调整
    //i为列号
    for(int i =0;i<n;i++){
        //找到该列最大的
        int maxNum=0;
        int maxIndex=0;
        //第一列从第一个元素开始找,第二列从第二个元素开始找
        for(int j=i;j<n;j++){
            if(arr[j][i]>maxNum){
                maxNum = arr[j][i];
                maxIndex = j;//行号
            }
        }
        //最大行与第i行交换
        for(int k=0;k<n;k++)
            swap(arr[i][k],arr[maxIndex][k]);
    }
    //输出该矩阵
    for(int i =0;i<n;i++){
        for(int j =0;j<n;j++)
            cout<<arr[i][j]<<" ";
        cout<<endl;
    }
}
// 64 位输出请用 printf("%lld")