var
mat : array [1..6, 1..6] of longint =
( (-36, 19, -24, -18, 6, -25),
(18, -27, -24, 7, -30, -23),
(4, -34, 8, -42, -18, 12),
(-33, -45, -4, -5, -5, -2),
(-40, 12, -30, 24, 12, -14),
(-12, -35, 4, -18, -17, -24) );
inf : longint;
dp : array [1..6, 1..6] of longint;
i, j : longint;
function max(a, b: longint): longint;
begin
if a > b then max := a
else max := b;
end;
function min(a, b: longint): longint;
begin
if a < b then min := a
else min := b;
end;
function f(y, x: longint): longint; // minimum hp dari posisi x, y sampai 6,6
begin
if (x > 6) or (y > 6) then begin // out of bound
f := inf;
end else if dp[y][x] <> -1 then begin
f := dp[y][x];
end else begin
if (x = 6) and (y = 6) then begin // base case
f := max(1, -mat[y][x] + 1);
end else begin
f := max(1, -mat[y][x] + min(f(y+1, x), f(y, x+1)));
end;
dp[y][x] := f;
end;
end;
begin
inf := 1000000000;
for j:=1 to 6 do for i:=1 to 6 do dp[j][i] := -1;
for j:=1 to 6 do begin
for i:=1 to 6 do begin
write(f(j, i), ' ');
end;
writeln();
end;
end.
dmFyCiAgbWF0IDogYXJyYXkgWzEuLjYsIDEuLjZdIG9mIGxvbmdpbnQgPSAKICAgICAgICAoICgtMzYsIDE5LCAtMjQsIC0xOCwgNiwgLTI1KSwKICAgICAgICAgICgxOCwgLTI3LCAtMjQsIDcsIC0zMCwgLTIzKSwKICAgICAgICAgICg0LCAtMzQsIDgsIC00MiwgLTE4LCAxMiksCiAgICAgICAgICAoLTMzLCAtNDUsIC00LCAtNSwgLTUsIC0yKSwKICAgICAgICAgICgtNDAsIDEyLCAtMzAsIDI0LCAxMiwgLTE0KSwKICAgICAgICAgICgtMTIsIC0zNSwgNCwgLTE4LCAtMTcsIC0yNCkgKTsKICBpbmYgOiBsb25naW50OwogIGRwIDogYXJyYXkgWzEuLjYsIDEuLjZdIG9mIGxvbmdpbnQ7CiAgaSwgaiA6IGxvbmdpbnQ7CgpmdW5jdGlvbiBtYXgoYSwgYjogbG9uZ2ludCk6IGxvbmdpbnQ7CmJlZ2luCiAgaWYgYSA+IGIgdGhlbiBtYXggOj0gYQogIGVsc2UgbWF4IDo9IGI7CmVuZDsKCmZ1bmN0aW9uIG1pbihhLCBiOiBsb25naW50KTogbG9uZ2ludDsKYmVnaW4KICBpZiBhIDwgYiB0aGVuIG1pbiA6PSBhCiAgZWxzZSBtaW4gOj0gYjsKZW5kOwoKZnVuY3Rpb24gZih5LCB4OiBsb25naW50KTogbG9uZ2ludDsgLy8gbWluaW11bSBocCBkYXJpIHBvc2lzaSB4LCB5IHNhbXBhaSA2LDYKYmVnaW4KICBpZiAoeCA+IDYpIG9yICh5ID4gNikgdGhlbiBiZWdpbiAvLyBvdXQgb2YgYm91bmQKICAJZiA6PSBpbmY7CiAgZW5kIGVsc2UgaWYgZHBbeV1beF0gPD4gLTEgdGhlbiBiZWdpbgogICAgZiA6PSBkcFt5XVt4XTsKICBlbmQgZWxzZSBiZWdpbgogICAgaWYgKHggPSA2KSBhbmQgKHkgPSA2KSB0aGVuIGJlZ2luIC8vIGJhc2UgY2FzZQogIAkgIGYgOj0gbWF4KDEsIC1tYXRbeV1beF0gKyAxKTsKICAgIGVuZCBlbHNlIGJlZ2luCiAgICAgIGYgOj0gbWF4KDEsIC1tYXRbeV1beF0gKyBtaW4oZih5KzEsIHgpLCBmKHksIHgrMSkpKTsKICAgIGVuZDsKICAgIGRwW3ldW3hdIDo9IGY7CiAgZW5kOwplbmQ7CgpiZWdpbgogIGluZiA6PSAxMDAwMDAwMDAwOwogIGZvciBqOj0xIHRvIDYgZG8gZm9yIGk6PTEgdG8gNiBkbyBkcFtqXVtpXSA6PSAtMTsKICBmb3Igajo9MSB0byA2IGRvIGJlZ2luCiAgICBmb3IgaTo9MSB0byA2IGRvIGJlZ2luCiAgICAgIHdyaXRlKGYoaiwgaSksICcgJyk7CiAgICBlbmQ7CiAgICB3cml0ZWxuKCk7CiAgZW5kOwplbmQuCg==