H. Нагрузочное тестирование
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Поликарп планирует провести нагрузочное тестирование своего нового проекта Fakebook. Он уже договорился с друзьями, чтобы в определённые моменты времени они посылали запросы в Fakebook. Тестирование продлится n минут, в i-ю минуту друзья пошлют ai запросов.

Поликарп планирует протестировать Fakebook под особым видом нагрузки. В случае попадания информации о Fakebook в СМИ Поликарп надеется на монотонный рост нагрузки, который сменится монотонным убыванием интереса к сервису. Такой профиль нагрузки и собирается протестировать Поликарп во время нагрузочного теста.

Какое минимальное количество запросов придется дополнительно сделать Поликарпу, чтобы сначала нагрузка на сервер строго возрастала, а затем строго убывала? Как возрастающая часть, так и убывающая часть могут быть пустыми (то есть отсутствовать). Убывание должно сразу же сменить возрастание, например, участок одинаковых подряд значений нагрузки недопустим.

К примеру, если нагрузка описывается одним из массивов [1, 2, 8, 4, 3], [1, 3, 5] или [10], то такой профиль нагрузки устраивает Поликарпа (в каждом из этих случаев сначала идёт участок строгого возрастания, затем тут же строго убывания). Если нагрузка описывается одним из массивов [1, 2, 2, 1], [2, 1, 2] или [10, 10], то такой профиль нагрузки не устраивает Поликарпа.

Помогите Поликарпу сделать минимальное количество дополнительных запросов, чтобы получившийся профиль нагрузки его устраивал. Дополнительные запросы Поликарп может делать в любом количестве в любые минуты от 1 до n.

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

В первой строке содержится целое положительное число n (1 ≤ n ≤ 100 000) — продолжительность нагрузочного тестирования.

Во второй строке содержатся n целых чисел a1, a2, ..., an (1 ≤ ai ≤ 109), где ai — количество запросов со стороны друзей в i-ю минуту тестирования.

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

Выведите минимальное количество дополнительных запросов, которые надо сделать Поликарпу, чтобы нагрузка сначала строго возрастала, а затем сразу строго убывала.

Примеры
Входные данные
5
1 4 3 2 5
Выходные данные
6
Входные данные
5
1 2 2 2 1
Выходные данные
1
Входные данные
7
10 20 40 50 70 90 30
Выходные данные
0
Примечание

В первом примере Поликарп должен сделать два дополнительных запроса в третью минуту и четыре — в четвёртую. Тогда получившаяся нагрузка примет вид: [1, 4, 5, 6, 5]. Суммарно будет сделано 6 дополнительных запросов.

Во втором примере достаточно один раз сделать дополнительный запрос в третью минуту, поэтому ответ равен 1.

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