n = read_line.to_i a = read_line.split.map &.to_i dp = Array.new(n, 0) prev = Array.new(n, -1) n.times do |i| if i < 2 dp[i] = a[i] else pos = dp[0..(i-2)].each_with_index.max[1] dp[i] = dp[pos] + a[i] prev[i] = pos end end ans = [dp.each_with_index.max[1]] while prev[ans[-1]] != -1 ans << prev[ans[-1]] end puts dp[-1] puts ans.reverse.map(&.succ).join(' ')