import sys import pypyjit from __pypy__ import builders pypyjit.set_param( threshold=200, trace_eagerness=20, ) MASK = 0xFFFFFFFF def main(): data = sys.stdin.buffer.read() p = 0 # H H = 0 while True: c = data[p] p += 1 if c < 48: break H = H * 10 + c - 48 # W W = 0 while True: c = data[p] p += 1 if c < 48: break W = W * 10 + c - 48 # 最終行末に改行がない場合だけ sentinel を追加 if data[-1] >= 48: data += b'\n' S = [0] * H total = 0 # W=1 は特に H が大きくなりうるので専用化 if W == 1: r = 0 while r < H: x = data[p] - 48 p += 1 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 # 10桁なので次は必ず区切り p += 1 S[r] = x total += x r += 1 else: r = 0 while r < H: row = 0 j = 0 while j < W: # 1桁目 x = data[p] - 48 p += 1 # 2桁目 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 # 3桁目 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 # 4桁目 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 # 5桁目 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 # 6桁目 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 # 7桁目 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 # 8桁目 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 # 9桁目 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 # 10桁目 c = data[p] p += 1 if c >= 48: x = x * 10 + c - 48 # A_ij <= 1e9 なので # これ以上の桁はない p += 1 row += x j += 1 S[r] = row total += row r += 1 T = total & MASK # ここは現在最速だった実装を維持 out = builders.StringBuilder(H * 4) append = out.append for s in S: append(str((s + T) & MASK)) append('\n') sys.stdout.write(out.build()) main()