#include typedef long long ll; typedef unsigned long long ull; #define FOR(i,a,b) for(int (i)=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RANGE(vec) (vec).begin(),(vec).end() using namespace std; class ConveyorBeltSushi2 { public: void solve(void) { int N; cin>>N; vector vi(N); REP(i,N) cin>>vi[i]; vector> dp(N+1,vector(2,0)); dp[1][0] = 0; dp[1][1] = vi[0]; FOR(i,1,N) { dp[i+1][0] = max(dp[i][0], dp[i][1]); dp[i+1][1] = max({dp[i][0]+vi[i], dp[i-1][0]+vi[i], dp[i-1][1]+vi[i]}); } vector ret; int n = N; int w = max(dp[n][0],dp[n][1]); while (w) { if ( dp[n][1] == w ) { ret.push_back(n); w -= vi[n-1]; if ( n >= 2 ) { if (dp[n-2][0] == w || dp[n-2][1] == w) --n; } } --n; } cout<solve(); delete obj; return 0; } #endif