#include <fstream>
#include <cmath>
#define dim 63367
using namespace std;
int a[dim],S[dim],urm[dim],x,nrniv=0,N;
float y;
int main()
{
ifstream f("suma4.in");
ofstream g("suma4.out");
int i,j,n,pozi,pozf,k,A,B,C,D,stop,minim;
int x,y;
f>>n;
for(i=1;i<=n;++i)f>>a[i];
//x=63367;
x=n;
y=pow(3*x,1.0/3.0);
//g<<y<<'\n';
nrniv=(int)y;
N=(nrniv)*(nrniv+1)*(2*nrniv+1)/6;
if(N>x)
--nrniv,N=(nrniv)*(nrniv+1)*(2*nrniv+1)/6;;
//partea a 2-a
//vedem ce numere sunt pe ultimul nivel
pozi=N-(nrniv*nrniv)+1;
pozf=N;
for(j=pozi;j<=pozf;++j)
S[j]=a[j];
j=pozi;
for(i=nrniv-1;i>=1;--i) //i=nivelul curent
{
stop=i*i;
//pe nivelul i sunt i*i elemente
x=i; //linia
y=i+1; //coloana
for(k=1;k<=stop;++k)
{
--j;
//cautam pozitia sa
--y;
if(y==0){--x;y=i;}
//cautam succesorii elementului cu indice j
A=j + stop + (x-1);
B=A+1;
C=A+i+1;
D=C+1;
minim=S[A];
urm[j]=A;
if(minim>S[B]) minim=S[B],urm[j]=B;
if(minim>S[C]) minim=S[C],urm[j]=C;
if(minim>S[D]) minim=S[D],urm[j]=D;
S[j]=S[urm[j]]+a[j];
//g<<" j="<<j<<" A="<<A<<" B="<<B<<" C="<<C<<" D="<<D<<" urm[j]="<<urm[j]<<" S[j]="<<S[j]<<'\n';
}
}
g<<nrniv<<' ';
g<<S[1]<<'\n';
j=1;
while(j!=0)
{
g<<j<<" ";
j=urm[j];
}
g<<'\n';
return 0;
}