var
mat : array [1..6, 1..6] of longint =
( (-36, 15, -20, -18, 6, -25),
(18, -23, -20, 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.
dmFyCiAgbWF0IDogYXJyYXkgWzEuLjYsIDEuLjZdIG9mIGxvbmdpbnQgPSAKICAgICAgICAoICgtMzYsIDE1LCAtMjAsIC0xOCwgNiwgLTI1KSwKICAgICAgICAgICgxOCwgLTIzLCAtMjAsIDcsIC0zMCwgLTIzKSwKICAgICAgICAgICg0LCAtMzQsIDgsIC00MiwgLTE4LCAxMiksCiAgICAgICAgICAoLTMzLCAtNDUsIC00LCAtNSwgLTUsIC0yKSwKICAgICAgICAgICgtNDAsIDEyLCAtMzAsIC0yNCwgMTIsIC0xNCksCiAgICAgICAgICAoLTEyLCAtMzUsIDQsIC0xOCwgLTE3LCAtMjQpICk7CiAgaW5mIDogbG9uZ2ludDsKICBkcCA6IGFycmF5IFsxLi42LCAxLi42XSBvZiBsb25naW50OwogIGksIGogOiBsb25naW50OwoKZnVuY3Rpb24gbWF4KGEsIGI6IGxvbmdpbnQpOiBsb25naW50OwpiZWdpbgogIGlmIGEgPiBiIHRoZW4gbWF4IDo9IGEKICBlbHNlIG1heCA6PSBiOwplbmQ7CgpmdW5jdGlvbiBtaW4oYSwgYjogbG9uZ2ludCk6IGxvbmdpbnQ7CmJlZ2luCiAgaWYgYSA8IGIgdGhlbiBtaW4gOj0gYQogIGVsc2UgbWluIDo9IGI7CmVuZDsKCmZ1bmN0aW9uIGYoeSwgeDogbG9uZ2ludCk6IGxvbmdpbnQ7IC8vIG1pbmltdW0gaHAgZGFyaSBwb3Npc2kgeCwgeSBzYW1wYWkgNiw2CmJlZ2luCiAgaWYgKHggPiA2KSBvciAoeSA+IDYpIHRoZW4gYmVnaW4gLy8gb3V0IG9mIGJvdW5kCiAgCWYgOj0gaW5mOwogIGVuZCBlbHNlIGlmIGRwW3ldW3hdIDw+IC0xIHRoZW4gYmVnaW4KICAgIGYgOj0gZHBbeV1beF07CiAgZW5kIGVsc2UgYmVnaW4KICAgIGlmICh4ID0gNikgYW5kICh5ID0gNikgdGhlbiBiZWdpbiAvLyBiYXNlIGNhc2UKICAJICBmIDo9IG1heCgxLCAtbWF0W3ldW3hdICsgMSk7CiAgICBlbmQgZWxzZSBiZWdpbgogICAgICBmIDo9IG1heCgxLCAtbWF0W3ldW3hdICsgbWluKGYoeSsxLCB4KSwgZih5LCB4KzEpKSk7CiAgICBlbmQ7CiAgICBkcFt5XVt4XSA6PSBmOwogIGVuZDsKZW5kOwoKYmVnaW4KICBpbmYgOj0gMTAwMDAwMDAwMDsKICBmb3Igajo9MSB0byA2IGRvIGZvciBpOj0xIHRvIDYgZG8gZHBbal1baV0gOj0gLTE7CiAgZm9yIGo6PTEgdG8gNiBkbyBiZWdpbgogICAgZm9yIGk6PTEgdG8gNiBkbyBiZWdpbgogICAgICB3cml0ZShmKGosIGkpLCAnICcpOwogICAgZW5kOwogICAgd3JpdGVsbigpOwogIGVuZDsKZW5kLgo=