#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define MAX 102
void read();
using namespace std;
int map[MAX][MAX],best[MAX],n;
bool visit[MAX];
int main()
{
//freopen("in.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
memset(visit,false,sizeof(visit));
read();
int ans=0,k;
for(int i=1;i<=n;i++)
{
best[i]=map[1][i];
}
visit[1]=true;
while(1)
{
int min=1 << 30;
k=0;
for(int i=1;i<=n;i++)
{
if(!visit[i] && best[i]<min)
{
min=best[i];
k=i;
}
}
if(k==0)break;
ans+=min;
visit[k]=true;
for(int i=1;i<=n;i++)
{
if(!visit[i] &&map[k][i]<best[i])
{
best[i]=map[k][i];
}
}
}
cout << ans << endl;
}
return 0;
}
void read()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&map[i][j]);//输入邻接矩阵
}
}
}