사슬

아직 제출이 없습니다시간 제한3초메모리 제한512 MB

문제

바이트랜드(Byteland)가 늘 민주적인 나라였던 것은 아니다. 역사에는 어두운 시절도 있었다. 어느 날, 바이트랜드를 지배하던 군사 정권의 사령관 바이텔(Bytel) 장군은 오랜 전쟁을 끝내고 투옥되어 있던 반정부 인사들을 풀어 주었다. 그러나 지도자 바이체사르(Bytesar)만은 자유롭게 놓아줄 생각이 없었다. 장군은 그를 '바이트식 사슬(bytish chain)'로 벽에 묶어 두기로 했다. 이 사슬은 서로 맞물린 고리들과 벽에 고정된 막대(bar)로 이루어져 있다. 고리는 막대에 직접 연결되어 있지는 않지만, 막대에서 빼내기가 매우 까다롭다.

바이체사르가 사슬의 모든 고리를 막대에서 빼낼 수 있도록 도와주자. 고리에는 1,2,,n1, 2, \ldots, n번의 번호가 붙어 있고, 다음 규칙에 따라 막대에 고리를 끼우거나 뺄 수 있다.

  • 한 번의 동작에서 고리는 정확히 하나만 끼우거나 뺄 수 있다.
  • 1번 고리는 언제든지 끼우거나 뺄 수 있다.
  • 1k<n1 \le k < n에 대해, 1번부터 k1k-1번까지의 고리가 모두 막대에서 빠져 있고 kk번 고리가 막대에 끼워져 있을 때에만 k+1k+1번 고리를 끼우거나 뺄 수 있다.

사슬의 초기 상태가 주어졌을 때, 모든 고리를 막대에서 빼내는 데 필요한 최소 동작 횟수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 nn이 주어진다 (1n10001 \le n \le 1\,000). 둘째 줄에는 nn개의 정수 o1,o2,,ono_1, o_2, \ldots, o_n이 공백으로 구분되어 주어지며, 각 값은 0 또는 1이다. oi=1o_i = 1이면 ii번 고리가 막대에 끼워져 있는 상태이고, oi=0o_i = 0이면 빠져 있는 상태이다.

출력

모든 고리를 막대에서 빼내는 데 필요한 최소 동작 횟수를 한 줄에 출력한다.