#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
typedef long long ll;
int n;
int a[maxn];
ll ans1, ans2;
bool all_neg = 1;
vector<int> s, o; 
void output()
{
	printf("%d\n", o.size());
	for(auto v : o) printf("%d\n", v);
}
void solve_all_neg()
{
	int Max = -1e9, pos;
	for(int i = 1; i <= n; ++i)
		if(a[i] >= Max)
			Max = a[i], pos = i;
	printf("%d\n", Max);
	for(int i = 1; i < pos; ++i) o.push_back(1);
	for(int i = n; i > pos; --i) o.push_back(i - pos + 1);
	output();
	exit(0);
}
int main()
{
	//freopen("rand_9.in", "r", stdin);
	scanf("%d", &n);
	for(int i = 1; i <= n; ++i) 
	{
		scanf("%d", &a[i]);
		if(a[i] >= 0)
			all_neg = 0;
	}
	for(int i = 1; i <= n; ++i)
		if(i & 1)
			ans1 += max(a[i], 0);
		else
			ans2 += max(a[i], 0);
	if(all_neg) solve_all_neg();
	printf("%lld\n", max(ans1, ans2));
	int start;
	if(ans1 >= ans2) start = 1;
	else start = 2;
	for(int i = start, j = start; i <= n; i += 2, j += 2)
		if(a[i] < 0)
		{
			o.push_back(j);
			if(i > 1) j -= 2;
			else --j;
		}
		else
			s.push_back(i);
	if(s[0] > 1) o.push_back(1);
	for(int i = 0; i < s.size() - 1; ++i)
		o.push_back(2);
	if(s.back() < n)
		o.push_back(2);
	output();	
	return 0;
}