#include <iostream>
#define llint long long
#define inf 1e18

using namespace std;

llint n;
llint a[505][505];
llint sum[505][505];
llint dp[505][505][505];

llint get(llint sx, llint sy, llint tx, llint ty)
{
	if(sx > tx || sy > ty) return 0;
	return sum[tx][ty] - sum[sx-1][ty] - sum[tx][sy-1] + sum[sx-1][sy-1];
}

int main(void)
{
	cin >> n;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= n; j++){
			if(i == j) continue;
			cin >> a[i][j];
		}
	}
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= n; j++){
			sum[i][j] = sum[i][j-1] + sum[i-1][j] - sum[i-1][j-1] + a[i][j];
		}
	}
	
	for(int i = 1; i <= n; i++){
		for(int j = 0; j <= n; j++){
			for(int k = 0; k <= n; k++){
				dp[i][j][k] = inf;
			}
		}
	}
	dp[1][0][0] = 0;
	
	for(int i = 1; i < n; i++){
		for(int j = 0; j <= n; j++){
			for(int k = 0; k <= n; k++){
				dp[i+1][j][k] = min(dp[i+1][j][k], dp[i][j][k] + get(j+1, i+1, i, i+1) + get(i+1, 1, i+1, k) );
				dp[i+1][i][j] = min(dp[i+1][i][j], dp[i][j][k] + get(i+1, 1, i+1, j) );
			}
		}
	}
	
	llint ans = inf;
	for(int j = 0; j <= n; j++){
		for(int k = 0; k <= n; k++){
			ans = min(ans, dp[n][j][k]);
		}
	}
	cout << ans << endl;
	
	return 0;
}