import math._ object Main { def main(args: Array[String]) { val sc = new java.util.Scanner(System.in) val n = sc.nextInt val xs = new Array[Int](n+1) for (i <- 1 to n) { xs(i) = sc.nextInt } val dp = new Array[Int](n+1) // お寿司の最大幸福度 for (i <- 1 to n) { // i 番目のお寿司を食べない dp(i) = dp(i-1) // i 番目のお寿司を食べる dp(i) = max(dp(i), xs(i) + (if (i-2 >= 0) dp(i-2) else 0)) } // 食べたお寿司の構築 def construct(p: Int, acc: List[Int]): List[Int] = { if (xs(p) == dp(p)) { p :: acc } else if (xs(p) + dp(p-2) == dp(p)) { construct(p-2, p :: acc) } else { construct(p-1, acc) } } println(dp(n)) println(construct(n, Nil).mkString(" ")) } }