import sys from __pypy__ import builders, utf8content MASK = 0xFFFFFFFF def main(): rd = sys.stdin.buffer H, W = map(int, rd.readline().split()) data = rd.read() # H == 1: # S1 == T なので C1 == 2*S1 (mod 2^32) if H == 1: num = 0 s = 0 for c in data: if c >= 48: num = num * 10 + c - 48 else: s += num num = 0 s += num sys.stdout.buffer.write( utf8content(str((s << 1) & MASK)) ) return S = [0] * H # W == 1 では row_sum と c == 10 の判定が不要 if W == 1: r = 0 num = 0 total = 0 for c in data: if c >= 48: num = num * 10 + c - 48 else: S[r] = num total += num r += 1 num = 0 if r < H: S[r] = num total += num else: # ここは現在最速のコードをそのまま維持 r = 0 num = 0 row_sum = 0 total = 0 for c in data: if c >= 48: num = num * 10 + c - 48 elif c == 10: row_sum += num S[r] = row_sum total += row_sum r += 1 num = 0 row_sum = 0 else: row_sum += num num = 0 if r < H: row_sum += num S[r] = row_sum total += row_sum T = total & MASK # 最大10桁 + '\n' = 11 bytes / 行 # # PyPy 7.3.23 の StringBuilder(size) は # 内部 Utf8StringBuilder に 3*size を渡す。 # したがって ceil(11H/3) を指定すれば十分。 out = builders.StringBuilder((11 * H + 2) // 3) append = out.append for s in S: append(str((s + T) & MASK)) append('\n') # sys.stdout.write() を通さず、 # StringBuilder の内部 UTF-8 表現を直接 bytes として出力 sys.stdout.buffer.write(utf8content(out.build())) main()