팁오버는 6×6 크기의 보드판에 다양한 높이의 블록을 배치한 다음 그것들을 쓰러뜨려 주인공이 출발지에서 목적지까지 이동할 수 있게 만드는 퍼즐 게임이다. 어느 날 이 퍼즐을 풀던 시헌이는 지루해지기 시작했고, 다음과 같은 1차원 팁오버 게임을 생각해냈다.
하지만 시헌이는 게임을 클리어할 수 없는 배치가 존재한다는 것을 깨달았다. 그래서 시헌이는 게임에 다음과 같은 규칙을 추가했다.
시헌이는 자신이 만든 보드판에서 게임을 진행할 때 큐브 블록이 최소한 몇 개나 있어야 게임을 클리어할 수 있는지 궁금해졌다. 당신은 이 문제를 해결해야 한다.
첫째 줄에 N이 주어진다. (3≤N≤300,000) 둘째 줄에 N개의 정수 A_1,A_2,…,A_N이 공백으로 구분되어 주어진다. A_i는 2 이상 N 이하의 정수 또는 0이다. A_i=0인 경우 처음에 i번 칸에 블록이 존재하지 않는 것이고, A_i>0인 경우 처음에 i번 칸에 높이가 A_i인 블록이 존재하는 것이다.
미리 몇 개의 블록을 쓰러뜨릴 수 있을 때 시헌이가 게임을 클리어하기 위해 추가해야 하는 큐브 블록의 최소 개수를 출력한다.