#动态规划五部曲——确定dp数组含义、写出递推公式、初始化、遍历、打印数组(debug)

#确定dp数组含义
#dp[i]表示到达第i个台阶的最小花费

#写出递推公式
#dp[i]=min(dp[i-1]+cast[i-1],dp[i-2]+cast[i-2])

#初始化
#dp[0]=0,dp[1]=0 这里有点坑,可能会以为dp[1]=cast[0],实际上题目说了可以从0或者1出发,所以dp[1]也是0

n=int(input())
cast=[int(i) for i in input().split()]
# print(cast)
dp=[0 for i in range(n+1)]
dp[0]=0
dp[1]=0
for i in range(2,n+1):
    dp[i]=min(dp[i-1]+cast[i-1],dp[i-2]+cast[i-2])
# print(dp)
print(dp[-1])