#include <bits/stdc++.h>
#define syosu(x) fixed<<setprecision(x)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> P;
typedef pair<double,double> pdd;
typedef pair<ll,ll> pll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<double> vd;
typedef vector<vd> vvd;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<string> vs;
typedef vector<P> vp;
typedef vector<vp> vvp;
typedef vector<pll> vpll;
typedef pair<P,int> pip;
typedef vector<pip> vip;
const int inf=1<<30;
const ll INF=1ll<<55;
const double pi=acos(-1);
const double eps=1e-8;
const ll mod=1e9+7;
const int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};

int n;
vl a,b;

int main(){
	cin>>n;
	a=vl(n);
	for(int i=0;i<n;i++) cin>>a[i];
	vl dp(n);
	for(int i=0;i<n;i++){
		for(int j=2;j<=i;j+=2) dp[i]=max(dp[i],dp[i-j]);
		dp[i]+=a[i];
	}
	pll p={-INF,n};
	for(int i=0;i<n;i++) p=max(p,{dp[i],i});
	int I=p.second;
	for(int i=1;i<n-I;i++) b.push_back(n-i);
	while(dp[I]!=a[I]){
		for(int j=2;j<=I;j+=2) if(dp[I-j]+a[I]==dp[I]){
			for(int k=j/2-1;k>=0;k--) b.push_back(I-j+(k>0?2:1));
			I-=j;
			break;
		}
	}
	for(int i=0;i<I;i++) b.push_back(0);
	cout<<p.first<<endl<<b.size()<<endl;
	for(auto i:b) cout<<i+1<<endl;
}