#include #define INF 100000000000000007LL using namespace std; typedef long long ll; typedef pair P; class segtree{ public: static const int N=1<<18; ll dp[1<<19]; ll lazy[1<<19]; segtree(){ memset(dp,0,sizeof(dp)); } void lazy_eval(int k){ dp[k]+=lazy[k]; if(k0){ seg[0].update(0,i,val); seg[2].update(0,i-1,val); }else{ seg[1].update(0,i-1,-val); } ll bv=seg[0].query(0,i); bv=min(bv,seg[2].query(0,i)+p); seg[1].update(i,i+1,min(seg[1].query(0,i)+p,bv)); seg[2].update(i,i+1,min(seg[1].query(0,i)+p,bv)); seg[0].update(i,i+1,bv); } ll ans=INF; for(int i=0;i<3;i++){ ans=min(ans,seg[i].query(n-1,n)); } printf("%lld\n",ans); return 0; }