#include<bits/stdc++.h>
#define ull unsigned long long
#define N 5000+1
using namespace std;
struct node{
ull x,y,v;
}E[N];
ull m,n,k=1,dis,ans,f[N];
bool cmp(node a,node b)
{
return a.v<b.v;
}
ull find(ull k)
{
if(f[k]==k) return k;
return f[k]=find(f[k]);
}
int main()
{
scanf("%lld",&n);
for(ull i=1;i<=n;i++)
{
f[i]=i;
for(ull j=1;j<=n;j++)
{
scanf("%lld",&dis);
if(dis)
{
E[++m].x=i;
E[m].y=j;
E[m].v=dis;
}
}
}
sort(E+1,E+m+1,cmp);
for(ull i=1;i<=m&&n!=k;i++)
{
if(find(E[i].x)!=find(E[i].y))
{
f[find(E[i].x)]=find(E[i].y);
ans+=E[i].v,k++;
}
}
printf("%lld",ans);
return 0;
}