#include
#include
using namespace std;
//此题关键在于存储每行第一个最大数的行列值
typedef struct Matrix
{
int line;//行
int row;//列
int value;//值
};
int main(void)
{
int m,n;
while(cin >> m >> n)
{
Matrix matrix[m][n];
Matrix matrix_temp[m];//存储每行之和以及每行第一个最大数的位置
for(int i = 0;i < m;i++)
matrix_temp[i].value = INT32_MIN;
int sum;//计算每行之和
for(int i = 0;i < m;i++)
{
sum = 0;
for(int j = 0;j < n;j++)
{
cin >> matrix[i][j].value;
matrix[i][j].line = i;
matrix[i][j].row = j;
sum += matrix[i][j].value;
if(matrix[i][j].value > matrix_temp[i].value)//找到每行第一个最大数
matrix_temp[i] = matrix[i][j];
}
matrix_temp[i].value = sum;
}
for(int i = 0;i < m;i++)//对原矩阵重新赋值
{
int line = matrix_temp[i].line;
int row = matrix_temp[i].row;
matrix[line][row].value = matrix_temp[i].value;
}
for(int i = 0;i < m;i++)//输出
{
for(int j = 0;j < n;j++)
cout << matrix[i][j].value << ' ';
cout << endl;
}
}
return 0;
}