#include<bits/stdc++.h>
using namespace std;
long long in[100][100][3];
int f()
{
freopen("shuta.in","r",stdin);
freopen("shuta.out","w",stdout);
int a;
memset(in,0,sizeof(in));
scanf("%d",&a);
for (int t=0;t<a;++t)
for (int n=0;n<=t;++n)
{
scanf("%d",&in[t][n][0]);
in[t][n][2]=in[t][n][0];
}
for (int i=a;i>=0;--i)
for (int j=i;j>=0;--j)
{
if (in[i+1][j+1][0]>in[i+1][j][0]) in[i][j][1]=1;
else in[i][j][1]=0;
in[i][j][0]+=max(in[i+1][j+1][0],in[i+1][j][0]);
}
printf("%d\n",in[0][0][0]);
int j=0;
for (int i=0;i<a;++i)
{
cout<<in[i][j][2]<<' ';
if (in[i][j][1])
j++;
}
return 0;
}
int a=f();
int main(){;}