#include <stdio.h>

int main() {
    int a, b;
    while (scanf("%d %d", &a, &b) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to
        int data[a][b];
        int cnt = 0;
        while (cnt < a * b) {
            scanf("%d", &data[cnt / b][cnt % b]);
            cnt++;
        }
        int i,j;
        int rowSum[a],maxIndex[a],max,index;
        for(i=0;i<a;i++){
            rowSum[i]=0;
            max=-1;
            for(j=0;j<b;j++){
			  //计算行和
                rowSum[i]+=data[i][j];
			  //寻找第一个行最大值所在下标
                if(data[i][j]>max){
                    max=data[i][j];
                    index=j;
                }
            }
            maxIndex[i]=index;
        }
        for(i=0;i<a;i++){
            for(j=0;j<b;j++){
                if(j==maxIndex[i]){
                    printf("%d ",rowSum[i]);
                }else{
                    printf("%d ",data[i][j]);
                }
            }
            printf("\n");
        }
    }
    return 0;
}