e-olymp
Соревнования

January 19,20. One-dimentional Dynamic Programming

Покупка билетов

За билетами на премьеру нового мюзикла выстроилась очередь из n человек, каждый из которых хочет купить один билет. На всю очередь работала только одна касса, поэтому продажа билетов шла очень медленно, приводя "постояльцев" очереди в отчаяние. Самые сообразительные быстро заметили, что, как правило, несколько билетов в одни руки кассир продает быстрее, чем когда эти же билеты продаются по одному. Поэтому они предложили нескольким стоящим подряд людям отдавать деньги первому из них, чтобы он купил билеты на всех.

Однако для борьбы со спекулянтами кассир продавал не более трех билетов в одни руки, поэтому договориться таким образом между собой могли лишь два или три подряд стоящих человека.

Известно, что на продажу i-му человеку из очереди одного билета кассир тратит ai секунд, на продажу двух билетов bi секунд, трёх билетов ci секунд. Напишите программу, которая подсчитает минимальное время, за которое можно обслужить всех покупателей.

Обратите внимание, что билеты на группу объединившихся людей всегда покупает первый из них. Также никто в целях ускорения не покупает лишних билетов (то есть билетов, которые никому не нужны).

Входные данные

Первое число содержит количество покупателей в очереди n (1n5000). Далее идет n троек натуральных чисел ai, bi, ci. Каждое из этих чисел не превышает 3600. Люди в очереди нумеруются начиная от кассы.

Выходные данные

Вывести минимальное время в секундах, за которое можно обслужить всех покупателей.

Лимит времени 1 секунда
Лимит использования памяти 122.49 MiB
Входные данные #1
5
5 10 15
2 10 15
5 5 5
20 20 1
20 1 1
Выходные данные #1
12
Входные данные #2
2
3 4 5
1 1 1
Выходные данные #2
4