fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) val () = let val n = readInt () val vs = Array.tabulate (n, fn _ => readInt ()) val dp = Array.array (n + 1, 0) fun doDp index = if index <= n then ( Array.update (dp, index, Int.max (Array.sub (dp, index - 1), Array.sub (dp, index - 2) + Array.sub (vs, index - 1))); doDp (index + 1) ) else ignore () in if n = 1 then print (Int.toString (Array.sub (vs, 0)) ^ "\n") else ( Array.update (dp, 1, Array.sub (vs, 0)); doDp 2; print (Int.toString (Array.sub (dp, n)) ^ "\n") ) end