let sub hs b = List.map (fun a -> a - b) hs 

let divide hs = 
  (*
  Printf.printf "hs@divide: %s\n" (List.fold_left (fun acc h -> (string_of_int h) ^ "; " ^ acc) "" hs);
   *)
  let rec inner left temp min_h = function
  | [] -> temp::left, min_h
  | h::hs when h = 0 -> inner (temp::left) [] 101 hs
  | h::hs -> inner left (h::temp) (min min_h h) hs
  in inner [] [] 101 hs

let rec solve = function
  | [] -> 0
  | hs -> 
     match divide hs with
     | [], min_h -> 0
     | hss, min_h when List.length hss = 1 -> min_h + (solve @@ sub hs min_h)
     | hss, _ -> List.fold_left (fun acc hs -> acc + solve hs) 0 hss

let _ =
  let n = Scanf.scanf "%d\n" (fun n -> n) in
  let hs = ref [] in
  for i = 0 to n - 1 do
    Scanf.scanf (if i <> n - 1 then "%d " else "%d\n") (fun h -> hs := h::!hs)
  done;
  solve !hs |> print_int
