Take a break!
면접 대비시간 제한1초메모리 제한1024 MB
작업을 한 시간 휴식으로 나뉜 연속 묶음으로 배열해 각 묶음의 배증 벌점과 난이도의 곱의 합을 최소화하고 휴식 시간까지 더한다.
문제
Some call you lazy, others (yourself included) call you a break optimizer.
You have been tasked with a large number of chores around your house. The tasks vary greatly in difficulty---some literally only take a second, like putting a fork the dishwasher; others require a lot more effort, like cleaning the drain.
Each task has a difficulty, which is the number of seconds it takes you to complete the task when you are fully rested. Whenever you complete a task and directly start another, its completion time doubles. Formally, completing a task with difficulty after tasks before it, without any intervening breaks, takes seconds.
However, whenever you take a solid break of at least one hour, you become fully rested. (Shorter breaks don’t do anything for you.)
For instance, here are two (suboptimal) ways of scheduling the four tasks in sample :

In both schedules, task 3 takes seconds.
You have to complete all tasks, in any order. You begin fully rested. What is the shortest time to complete all tasks, including breaks?
입력
The first line contains the number of tasks to complete. The second line consists of integers , the difficulty of each task in seconds, where .
출력
Output a single integer, the minimal time in seconds it takes for you to complete all tasks, including your breaks.