//??¨?¨????????????°??????
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br =
				new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		
		//???????????????????????????????????°??¨?????°?????\???
		String[] matrixStr = br.readLine().split(" ");		//??????????????°??¨?????°?????\??????matrixStr
		int rowNum = Integer.parseInt(matrixStr[0]);		//?????°rowNum
		int colNum = Integer.parseInt(matrixStr[1]);		//?????°colNum
		int[][] resultArray = new int[rowNum+1][colNum+1];
		int lastNum = 0;
		
		//?????????????´??????????
		for(int i=0; i<rowNum; i++) {						//?????°rowNum?????°??????
			String[] inputStr = br.readLine().split(" ");	//????´?????????????inputStr
		
			for(int j=0; j<colNum; j++) {					//??????????´???????
				resultArray[i][j] = Integer.parseInt(inputStr[j]);
				resultArray[i][colNum] = resultArray[i][colNum] + resultArray[i][j];
					sb.append(resultArray[i][j] + " ");		//
			}
			sb.append(resultArray[i][colNum] + "\n");
		}
		
		for(int j=0; j<colNum; j++) {
			for(int i=0; i<rowNum; i++) {
				resultArray[rowNum][j] = resultArray[rowNum][j] + resultArray[i][j];
			}

				sb.append(resultArray[rowNum][j] + " ");

			lastNum = lastNum + resultArray[rowNum][j];
		}
			sb.append(lastNum + "\n");
			System.out.print(sb.toString());
	}

}
/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz