#include <stdio.h>
long long h, cek[1001][1001], a[1001][1001], temp[1001][1001];
long long minimum(int x, int y);
void cetak();
int main()
{
    scanf("%lld", &h);
    for (int i = 1; i <= h; i++)
    {
        for (int j = 1; j <= i; j++)
        {
            scanf("%lld", &a[i][j]);
            temp[i][j] = 0;
        }
    }
    minimum(1, 1);
    cetak();
}
long long minimum(int x, int y)
{
    if (temp[x][y] != 0)
    {
        return temp[x][y];
    }
    if (x == h)
    {
        return temp[x][y] = a[x][y];
    }
    if (minimum(x + 1, y) < minimum(x + 1, y + 1))
    {
        temp[x][y] = a[x][y] + minimum(x + 1, y);
        cek[x][y] = 1;
    }
    else
    {
        temp[x][y] = a[x][y] + minimum(x + 1, y + 1);
        cek[x][y] = 0;
    }
    return temp[x][y];
}
void cetak()
{
    a[1][1] = -1;
    int j = 1;
    for (int i = 1; i < h; i++)
    {
        if (cek[i][j])
        {
            a[i + 1][j] = -1;
        }
        else
        {
            a[i + 1][++j] = -1;
        }
    }
    for (int i = 1; i <= h; i++)
    {
        for (int j = 1; j <= i; j++)
        {
            printf("%lld ", a[i][j]);
        }
        printf("\n");
    }
}