#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
struct wires {int a, b, cost;};
int n, p[maxn], idx, ans, temp; wires wire[maxn];
int find(int x) {
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
bool cmp(wires s, wires t) {return s.cost < t.cost;}
int main() {
cin >> n;
for (int i = 1; i <= maxn; i ++)
p[i] = i;
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= n; j ++)
cin >> temp;
if (j < i) {
cin >> wire[++ idx].cost;
wire[idx].a = i; wire[idx].b = j;
}
sort(wire + 1, wire + idx + 1, cmp);
for (int i = 1; i <= idx; i ++)
if (find(wire[i].a) != find(wire[i].b)) {
ans += wire[i].cost;
p[find(wire[i].a)] = find(wire[i].b);
}
cout << ans;
return 0;
}