#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>

#define nn 100010
#define ll long long
#define inf 10000000000000
using namespace std;

int a[nn], n, m, A[nn], N, q[nn];

inline void Work(int st) {
	N = 0;
	int dl = 0;
	for (int i = st; i <= n; i += 2) 
		if (a[i] >= 0) q[++N] = i;
	
		
	for (int i = n; i > q[N]; i--) A[++A[0]] = i;
	for (int i = 1; i < q[1]; i++) A[++A[0]] = 1;
	for (int i = 1; i < N; i++) {
		int nm = q[i + 1] - q[i] - 1;
		for (int j = (nm + 1) / 2; j >= 1; j--) A[++A[0]] = j + 1;
	}
}

int main()
{
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
	
	ll nm1 = 0, nm0 = 0;
	for (int i = 1; i <= n; i += 2) nm1 += max(0, a[i]);
	for (int i = 2; i <= n; i += 2) nm0 += max(0, a[i]);

	if (nm0 == 0 && nm1 == 0) {
		int ps = 1;
		for (int i = 1; i <= n; i++) if (a[i] > a[ps]) ps = i;
		printf("%d\n%d\n", a[ps],n-1);
		for (int i = n; i > ps; i--) printf("%d ", i);
		for (int i = 1; i < ps; i++) printf("%d ", 1);
		puts("");
		return(0);
	}

	if (nm0 > nm1) {
		Work(2);
	}else {
		Work(1);
	}
	printf("%lld\n", max(nm0, nm1));
	printf("%d\n", A[0]);
	for (int i = 1; i <= A[0]; i++) printf("%d\n", A[i]);
}