#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
const int INF = 0x3f3f3f3f;
void floyd_algorithm(int (*dp)[210], const int n) {
int i, j, k;
for (k = 1; k <= n; ++k)
for (i = 1; i <= n; ++i)
for (j = 1; j <= n; ++j)
dp[i][j] = fmin(dp[i][j], dp[i][k] + dp[k][j]); // 状态转移方程
}
int main(int argc, char const *argv[]) {
int n;
fscanf(stdin, "%d", &n);
int dp[n + 1][210], x, y, w;
memset(dp, INF, sizeof dp);
for (y = 1; y <= n; ++y) dp[y][y] = 0;
for (y = 1; y <= n - 1; y++)
for (x = y + 1; x <= n; ++x) {
fscanf(stdin, "%d", &w);
dp[y][x] = w;
}
floyd_algorithm(dp, n);
return fprintf(stdout, "%d\n", dp[1][n]), 0;
}