#include <bits/stdc++.h>

bool allMinus(std::vector<long long>&);

int main()
{
	int n;
	scanf("%d", &n);
	std::vector<long long> a(n);
	for (auto& e: a) scanf("%lld", &e);
	if (allMinus(a))
	{
		int max_i{};
		for (int i{}; i < n; i++)
			if (a[i] > a[max_i])
				max_i = i;
		printf("%lld\n", a[max_i]);
		printf("%d\n", n - 1);
		for (int i{n - 1}; i > max_i; i--)
			printf("%d\n", i + 1);
		for (int i{}; i < max_i; i++)
			puts("1");
		return 0;
	}
	long long sum[2]{};
	for (int ini{}; ini < 2; ini++)
		for (int a_i{n - 1 - ini}; a_i >= 0; a_i -= 2)
			if (a[a_i] > 0)
				sum[ini] += a[a_i];
	std::vector<int> erase;
	if (sum[0] > sum[1])
	{
		if (a.back() <= 0) erase.push_back(n);
		for (int i{n - 3}; i >= 0; i -= 2)
			if (a[i] <= 0)
				erase.push_back(i + 1);
			else
				erase.push_back(i + 2);
		if (~n & 1) erase.push_back(1);
		else if (a.front() < 0) erase.push_back(1);
		printf("%lld\n", sum[0]);
	}
	else
	{
		for (int i{n - 2}; i >= 0; i -= 2)
			if (a[i] <= 0)
				erase.push_back(i + 1);
			else
				erase.push_back(i + 2);
		if (n & 1) erase.push_back(1);
		else if (a.front() < 0) erase.push_back(1);
		printf("%lld\n", sum[1]);
	}
	printf("%d\n", erase.size());
	for (auto& e: erase) printf("%d\n", e);

	return 0;
}

bool allMinus(std::vector<long long>& a)
{
	for (auto& e: a)
		if (e > 0)
			return false;
	return true;
}