type calc_once = Todo of int | Done of int
let pyramides n tab =
let rec max_sum flr i =
if flr = n then 0
else match tab.(flr).(i) with
| Todo v -> let res = v + max (max_sum (flr+1) i)
(max_sum (flr+1) (i+1))
in tab.(flr).(i) <- Done res;
res
| Done res -> res
in max_sum 0 0
let _ =
let n = read_int () in
let numbers = Array.init n
(fun k -> Array.init (k+1)
(fun _ -> Scanf.scanf "%d "
(fun x -> Todo x)))
in print_int (pyramides n numbers);
print_newline ()