#include<bits/stdc++.h>
#define ll long long
#define endl "\n"
#define F first
#define S second
#define loop(a,n) for(int i=a; i<=n ; i++)
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
#define NAME ""
using namespace std;
int a[1000][1000], g[1000][1000], trace[1000][1000];
int n, res = 0, pos;
void nhap() {
cin >> n;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= i; ++j)
cin >> a[i][j];
}
void solve() {
memset(g, 0, sizeof(g));
g[1][1] = a[1][1];
trace[1][1] = 0;
for(int i = 2; i <= n; ++i) {
for(int j = 1; j <= i; ++j) {
if (g[i-1][j] > g[i-1][j-1]) {
g[i][j] = g[i-1][j] + a[i][j];
trace[i][j] = j;
} else {
g[i][j] = g[i-1][j-1] + a[i][j];
trace[i][j] = j - 1;
}
}
}
for(int i = 1; i <= n; ++i) {
if (g[n][i] > res) {
res = g[n][i];
pos = i;
}
}
cout << res << endl;
int p[1000];
int row = n, col = pos;
while(row >= 1) {
p[row] = a[row][col];
col = trace[row][col];
row--;
}
for(int i = 1; i <= n; ++i)
cout << p[i] << " ";
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
nhap();
solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbmRsICJcbiIKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBsb29wKGEsbikgZm9yKGludCBpPWE7IGk8PW4gOyBpKyspCiNkZWZpbmUgVElNRSAoMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDKQojZGVmaW5lIE5BTUUgIiIKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBhWzEwMDBdWzEwMDBdLCBnWzEwMDBdWzEwMDBdLCB0cmFjZVsxMDAwXVsxMDAwXTsKaW50IG4sIHJlcyA9IDAsIHBvczsKCnZvaWQgbmhhcCgpIHsKICAgIGNpbiA+PiBuOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiAgICAgICAgZm9yKGludCBqID0gMTsgaiA8PSBpOyArK2opCiAgICAgICAgICAgIGNpbiA+PiBhW2ldW2pdOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgbWVtc2V0KGcsIDAsIHNpemVvZihnKSk7CiAgICBnWzFdWzFdID0gYVsxXVsxXTsKICAgIHRyYWNlWzFdWzFdID0gMDsKCiAgICBmb3IoaW50IGkgPSAyOyBpIDw9IG47ICsraSkgewogICAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gaTsgKytqKSB7CiAgICAgICAgICAgIGlmIChnW2ktMV1bal0gPiBnW2ktMV1bai0xXSkgewogICAgICAgICAgICAgICAgZ1tpXVtqXSA9IGdbaS0xXVtqXSArIGFbaV1bal07CiAgICAgICAgICAgICAgICB0cmFjZVtpXVtqXSA9IGo7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBnW2ldW2pdID0gZ1tpLTFdW2otMV0gKyBhW2ldW2pdOwogICAgICAgICAgICAgICAgdHJhY2VbaV1bal0gPSBqIC0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewogICAgICAgIGlmIChnW25dW2ldID4gcmVzKSB7CiAgICAgICAgICAgIHJlcyA9IGdbbl1baV07CiAgICAgICAgICAgIHBvcyA9IGk7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgcmVzIDw8IGVuZGw7CgogICAgaW50IHBbMTAwMF07CiAgICBpbnQgcm93ID0gbiwgY29sID0gcG9zOwogICAgd2hpbGUocm93ID49IDEpIHsKICAgICAgICBwW3Jvd10gPSBhW3Jvd11bY29sXTsKICAgICAgICBjb2wgPSB0cmFjZVtyb3ddW2NvbF07CiAgICAgICAgcm93LS07CiAgICB9CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiAgICAgICAgY291dCA8PCBwW2ldIDw8ICIgIjsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBuaGFwKCk7CiAgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K