#include <bits/stdc++.h>
using namespace std;
int main(){
int n=3;
vector<int>v={2,5,8 };
vector<int>dp(n+1,1000000);
dp[n]=0;
dp[0]=v[0];
//dp[i]=minimum cost to reach ith index.
for(int i=1;i<=n;i=i+1)
{
if(i-2>=0)
dp[i]=min(dp[i],dp[i-2]+v[i]);
if(i-1>=0)
dp[i]=min(dp[i],dp[i-1]+v[i]+v[i+1]);
//cant directly write dp[i+1]+v[i] because i dont know dp[i+1] yet . We are going from 1 to n. So will reach dp[i+1] by dp[i-1]+cost.
//also no consecutive backward move can be made so dont need to consider reaching i+1 from backward jump
}
cout<<min(dp[n-1],dp[n])<<endl;;
return 0;
}
CgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgppbnQgbWFpbigpewogICAgaW50IG49MzsKICAgIHZlY3RvcjxpbnQ+dj17Miw1LDggfTsKICAgIHZlY3RvcjxpbnQ+ZHAobisxLDEwMDAwMDApOwogICAgZHBbbl09MDsKICAgIGRwWzBdPXZbMF07CiAgICAvL2RwW2ldPW1pbmltdW0gY29zdCB0byByZWFjaCBpdGggaW5kZXguCiAgICBmb3IoaW50IGk9MTtpPD1uO2k9aSsxKQogICAgewogICAgICAgIGlmKGktMj49MCkKICAgICAgICBkcFtpXT1taW4oZHBbaV0sZHBbaS0yXSt2W2ldKTsKICAgICAgICBpZihpLTE+PTApCiAgICAgICAgZHBbaV09bWluKGRwW2ldLGRwW2ktMV0rdltpXSt2W2krMV0pOwogICAgICAgIC8vY2FudCBkaXJlY3RseSB3cml0ZSBkcFtpKzFdK3ZbaV0gYmVjYXVzZSBpIGRvbnQga25vdyBkcFtpKzFdIHlldCAuIFdlIGFyZSBnb2luZyBmcm9tIDEgdG8gbi4gU28gd2lsbCByZWFjaCBkcFtpKzFdIGJ5IGRwW2ktMV0rY29zdC4gCiAgICAgICAgLy9hbHNvIG5vIGNvbnNlY3V0aXZlIGJhY2t3YXJkIG1vdmUgY2FuIGJlIG1hZGUgc28gZG9udCBuZWVkIHRvIGNvbnNpZGVyIHJlYWNoaW5nIGkrMSBmcm9tIGJhY2t3YXJkIGp1bXAKICAgIH0KICAgIAogICAgY291dDw8bWluKGRwW24tMV0sZHBbbl0pPDxlbmRsOzsKICAgIAogICAgcmV0dXJuIDA7Cn0=