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 ()