#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
typedef pair<int , int> P2;
typedef pair<pair<int , int> , int> P3;
typedef pair<pair<int , int> , pair<int , int> > P4;
#define PB(a) push_back(a)
#define MP(a , b) make_pair((a) , (b))
#define M3P(a , b , c) make_pair(make_pair((a) , (b)) , (c))
#define M4P(a , b , c , d) make_pair(make_pair((a) , (b)) , make_pair((c) , (d)))
#define repp(i,a,b) for(int i = (int)(a) ; i < (int)(b) ; ++i)
#define repm(i,a,b) for(int i = (int)(a) ; i > (int)(b) ; --i)

const int MC = 1024;
int N;
LL a[MC];
bool b[MC];

int main(){
	cin >> N;
	repp(i,0,N) cin >> a[i];
	LL ans0 = 0 , ans1 = 0;
	bool c = 0;
	for(int i = 0 ; i < N ; i += 2){
		if(a[i] > 0){
			ans0 += a[i];
			b[i] = 1;
			c = 1;
		}
	}
	for(int i = 1 ; i < N ; i += 2){
		if(a[i] > 0){
			ans1 += a[i];
			b[i] = 1;
			c = 1;
		}
	}
	if(c){
		if(ans0 > ans1){
			for(int i = 1 ; i < N ; i += 2) b[i] = 0;
		} else {
			for(int i = 0 ; i < N ; i += 2) b[i] = 0;
		}
		cout << max(ans0,ans1) << endl;
	} else {
		int d = 0;
		repp(i,1,N){
			if(a[d] < a[i]) d = i;
		}
		cout << a[d] << endl;
		b[d] = 1;
	}
	vector<int> V;
	int p = 0 , r = 0;
	while(!b[p]){
		V.PB(1);
		++p;
		++r;
	}
	while(p < N){
		int q = p+1;
		while(!b[q] && q < N) ++q;
		if(q == N) break;
		repm(i,(q-p)/2,0){
			V.PB(p+1-r+i);
		}
		r += q-p;
		p = q;
	}
	repm(i,N-r,1) V.PB(i);
	cout << V.size() << endl;
	for(auto u : V) cout << u << endl;
	return 0;
}
