#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int p[N],num[N];
struct edge{
int u,v;
int w;
}e[N*N];
bool cmp(edge &a,edge &b)
{
return a.w < b.w;
}
int find(int x)
{
if(p[x] != x)
p[x] = find(p[x]);
return p[x];
}
int join(int x,int y)
{
x = find(x),y = find(y);
if(x == y)
return 0;
p[x] = y;
num[y] += num[x];
return 1;
}
int main()
{
int n,m,cnt = 0;
scanf("%d",&n);
for(int i = 1;i <= n;i++)
{
p[i] = i;
num[i] = 1;
}
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= n;j++)
{
cin >> m;
if(j >= i)
continue;
e[cnt].u = i;
e[cnt].v = j;
e[cnt++].w = m;
}
}
sort(e + 1,e + cnt + 1,cmp);
int sum = 0;
for(int i = 1;i <= m;i++)
if(join(e[i].u,e[i].v) == 1)
sum += e[i].w;
cout << sum;
return 0;
}