#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")