#include <bits/stdc++.h>
#define mod 1000000007
#define pb push_back
#define ll long long
#define mp make_pair
using namespace std;
int main(){
	ll n;
	cin>>n;
	vector<ll> a,od,ev;
	a.pb(0);
	for(int i=1;i<=n;i++){
		ll x;
		cin>>x;
		a.pb(x);
		if( i%2==1)od.pb(x);
		else ev.pb(x);
	}
	sort( od.begin(), od.end() );
	sort( ev.begin(), ev.end() );
	vector<ll> us;
	ll ans = 0;
	if( od[od.size()-1]<0 && ev[ev.size()-1]<0){
		ll tmp = max(od[od.size()-1],ev[ev.size()-1]);
		ans = tmp;
		ll f=0;
		for(int i=1;i<=n;i++){
			if( a[i]==tmp && f==0){
				us.pb(i);
				f=1;
			}
		}
	}
	else{
		ll odm = -1, evm = -1;
		vector<ll> odu,evu;
		for(int i=1;i<=n;i++){
			if(a[i]>=0){
				if(i%2==1){
					if(odm==-1)odm=0;
					odu.pb(i);
					odm += a[i];
				}
				else{
					if(evm==-1)evm=0;
					evu.pb(i);
					evm += a[i];
				}
			}
		}
		if( odm>evm ){
			ans = odm;
			us = odu;
		}
		else{
			ans = evm;
			us = evu;
		}
	}
	cout<<ans<<endl;
	vector<ll> tej;
	reverse(us.begin(),us.end());
	for(int i=0;i<us.size();i++){
		if(i==0){
			for(int j=n;j>=us[i]+1;j--){
				tej.pb(j);
			}
		}
		if(i!=us.size()-1){
			ll mid = (us[i]+us[i+1])/2;
			ll tur = (us[i]-us[i+1])/2;
			for(int j=0;j<tur;j++){
				tej.pb(mid-j);
			}
		}
		if(i==us.size()-1){
			for(int j=1;j<us[i];j++){
				tej.pb(1);
			}
		}
	}
	cout<<tej.size()<<endl;
	for(int i=0;i<tej.size();i++){
		cout<<tej[i]<<endl;
	}
	return 0;
}