$n = gets.to_i - 1 $v = gets.split.map(&:to_i) $dp = Array.new($n+1, -1) def dfs(n) return -1 if n < 0 return $v[0] if n == 0 return $v[1] if n == 1 $dp[n] = $v[n] + (0..(n-2)).map{|i| ($dp[i] < 0 ? dfs(i) : $dp[i])}.max return $dp[n] end puts [dfs($n), dfs($n-1)].max