#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<map>
#include<set>
using namespace std;
#define N 1005
#define inf 1e18
#define ll long long
#define db double
#define dbg1(x) cout<<#x<<"="<<x<<" "
#define dbg2(x) cout<<#x<<"="<<x<<"\n"
int n,A[N],g[N],Max,now,cnt,ans[N];ll f[N];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&A[i]),f[i]=-inf;
	for(int i=1;i<=n;i++)
	{
		for(int j=i-2;j>0;j-=2)
			if(f[j]+A[i]>f[i]) f[i]=f[j]+A[i],g[i]=j;
		if(A[i]>f[i]) f[i]=A[i],g[i]=0;
	}
	for(int i=1;i<=n;i++) if(f[i]>f[Max]||!Max) Max=i;
//	dbg1("f");for(int i=1;i<=n;i++) dbg1(f[i]);puts("");
//	dbg1("g");for(int i=1;i<=n;i++) dbg1(g[i]);puts("");
//	for(int i=Max;i;i=g[i]) dbg1(i);puts("");
	for(int i=n;i>Max;i--) ans[++cnt]=i;
//	cout<<g[Max]<<"aa\n";
	for(now=Max;g[now];now=g[now])
	{
		for(int i=1;i<(now-g[now])/2;i++) ans[++cnt]=g[now]+2;
		ans[++cnt]=g[now]+1;
	}
	for(int i=1;i<now;i++) ans[++cnt]=1;
//	printf("%lld\n",f[Max]);
	cout<<f[Max]<<"\n";
	printf("%d\n",cnt);
	for(int i=1;i<=cnt;i++) printf("%d\n",ans[i]);
//	dbg1(st),dbg2(ed);
	/*printf("%lld\n",Max);
	printf("%d\n",n-ed+st-1+(ed-st)/2);
	for(int i=n;i>ed;i--) printf("%d\n",i);
	for(int i=st;i<ed;i+=2) printf("%d\n",st+1);
	for(int i=1;i<st;i++) printf("%d\n",1);*/
	return 0;
}