var
  mat : array [1..6, 1..6] of longint = 
        ( (-23, 11, -17, 8, -10, -10),
          (17, -25, -58, -32, -45, -65),
          (-20, -58, 28, -30, 4, -21),
          (-10, -47, -31, 100, -10, 25),
          (-11, -48, 29, -17, 2, -14),
          (14, -70, 80, 20, 41, -41) );
  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.
