import sys import pypyjit from __pypy__ import builders pypyjit.set_param( threshold=200, function_threshold=50, trace_eagerness=2, ) MASK = 0xFFFFFFFF def read_num(d, p): x = d[p] - 48 p += 1 c = d[p] p += 1 if c < 48: return x, p x = x * 10 + c - 48 c = d[p] p += 1 if c < 48: return x, p x = x * 10 + c - 48 c = d[p] p += 1 if c < 48: return x, p x = x * 10 + c - 48 c = d[p] p += 1 if c < 48: return x, p x = x * 10 + c - 48 c = d[p] p += 1 if c < 48: return x, p x = x * 10 + c - 48 c = d[p] p += 1 if c < 48: return x, p x = x * 10 + c - 48 c = d[p] p += 1 if c < 48: return x, p x = x * 10 + c - 48 c = d[p] p += 1 if c < 48: return x, p x = x * 10 + c - 48 c = d[p] p += 1 if c < 48: return x, p x = x * 10 + c - 48 # 10桁なので次は必ず区切り p += 1 return x, p 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 # 最終行に改行がない場合 if data[-1] >= 48: data += b'\n' rn = read_num # ------------------------------------------------------------ # H == 1 # # S1 = T なので C1 = 2*T mod 2^32 # 8個ずつ処理してループ制御を削減 # ------------------------------------------------------------ if H == 1: total = 0 q = W >> 3 while q: a, p = rn(data, p) b, p = rn(data, p) c, p = rn(data, p) d, p = rn(data, p) e, p = rn(data, p) f, p = rn(data, p) g, p = rn(data, p) h, p = rn(data, p) total += a + b + c + d + e + f + g + h q -= 1 rem = W & 7 if rem: a, p = rn(data, p) total += a if rem > 1: a, p = rn(data, p) total += a if rem > 2: a, p = rn(data, p) total += a if rem > 3: a, p = rn(data, p) total += a if rem > 4: a, p = rn(data, p) total += a if rem > 5: a, p = rn(data, p) total += a if rem > 6: a, p = rn(data, p) total += a sys.stdout.write(str((total << 1) & MASK)) return S = [0] * H total = 0 r = 0 # ------------------------------------------------------------ # W == 1 # ------------------------------------------------------------ if W == 1: while r < H: a, p = rn(data, p) S[r] = a total += a r += 1 # ------------------------------------------------------------ # W == 2 # ------------------------------------------------------------ elif W == 2: while r < H: a, p = rn(data, p) b, p = rn(data, p) row = a + b S[r] = row total += row r += 1 # ------------------------------------------------------------ # W == 3 # ------------------------------------------------------------ elif W == 3: while r < H: a, p = rn(data, p) b, p = rn(data, p) c, p = rn(data, p) row = a + b + c S[r] = row total += row r += 1 # ------------------------------------------------------------ # W == 4 # ------------------------------------------------------------ elif W == 4: while r < H: a, p = rn(data, p) b, p = rn(data, p) c, p = rn(data, p) d, p = rn(data, p) row = a + b + c + d S[r] = row total += row r += 1 # ------------------------------------------------------------ # W >= 5 # # 8要素ずつ処理する # ------------------------------------------------------------ else: blocks = W >> 3 rem = W & 7 while r < H: row = 0 q = blocks while q: a, p = rn(data, p) b, p = rn(data, p) c, p = rn(data, p) d, p = rn(data, p) e, p = rn(data, p) f, p = rn(data, p) g, p = rn(data, p) h, p = rn(data, p) row += a + b + c + d + e + f + g + h q -= 1 # 最大7個。ループを作らず直線化する。 if rem: a, p = rn(data, p) row += a if rem > 1: a, p = rn(data, p) row += a if rem > 2: a, p = rn(data, p) row += a if rem > 3: a, p = rn(data, p) row += a if rem > 4: a, p = rn(data, p) row += a if rem > 5: a, p = rn(data, p) row += a if rem > 6: a, p = rn(data, p) row += a S[r] = row total += row r += 1 T = total & MASK # PyPy の StringBuilder を維持 out = builders.StringBuilder(H * 4) append = out.append # ------------------------------------------------------------ # 出力も4要素ずつアンロール # ------------------------------------------------------------ i = 0 n = H & ~3 while i < n: append(str((S[i] + T) & MASK)) append('\n') append(str((S[i + 1] + T) & MASK)) append('\n') append(str((S[i + 2] + T) & MASK)) append('\n') append(str((S[i + 3] + T) & MASK)) append('\n') i += 4 while i < H: append(str((S[i] + T) & MASK)) append('\n') i += 1 sys.stdout.write(out.build()) main()