#!/usr/bin/ruby
# -*- coding: utf-8 -*-
=begin
ITP1_7-C
 
Structured Program II - Spreadsheet
Time Limit : 1 sec, Memory Limit : 65536 KB
??¨?¨????

??¨?¨??????????????°???????????????°???????????????????????????

??¨????????°r??¨?????°c???r ?? c ???????´????????????¨?????????????????§???????????¨??????????¨?????????\????????°????????¨???????????????????????°?????????????????????????????????
Input

???????????????r??¨c????????????????????§??????????????????????¶????r??????????????????c????????´??°????????????????????§?????????????????????
Output

(r+1) ?? (c+1) ?????°????????¨??????????????????????????????????????£???????????´??°????????????????????§????????£??????????????????????????????????????¨??????????????????????¨?????????????????????????????????¨??????????????????????¨?????????????????????????????????¨??¨??????????¨????????????\??????????????????
Constraints

    1 ??? r, c ??? 100
    0 ??? ????´? ??? 100

Sample Input

4 5
1 1 3 4 5
2 2 2 4 5
3 3 0 1 1
2 3 4 4 6

Sample Output

1 1 3 4 5 14
2 2 2 4 5 15
3 3 0 1 1 8
2 3 4 4 6 19
8 9 9 13 17 56

=end

fh=STDIN
fl=fh.gets.chomp.split.map{|x| x.to_i}
rn = fl[0]
cn = fl[1]
#puts "rn=#{rn} cn=#{cn}"
v = Array.new(rn+1).map{Array.new(cn+1)}
(0..(rn)).each {|r|
  (0..(cn)).each {|c|
    v[r][c] = 0}}

(0..(rn-1)).each {|r|
  fl = fh.gets.chomp.split.map{|x| x.to_i}
  (0..(cn-1)).each {|c|
    v[r][c] = fl[c] }}
# for debug
#(0..(rn-1)).each {|r|
#  puts v[r].map{|x| x.to_s}.join(":")}

# calc
(0..(rn-1)).each {|r|
#  puts v[r].map{|x| x+1}.join("|")
#puts "wa=" + (v[r].inject(0) {|acc, item| acc + item}).to_s
  v[r][cn] = v[r].inject(0) {|acc, item| acc + item}}


(0..(cn)).each {|c|
  s = 0
  (0..(rn-1)).each {|r| 
    s += v[r][c]
  }
  v[rn][c] = s}

(0..(rn)).each {|r|
  puts v[r].map {|x| x.to_s}.join(" ")}