program p1765;
var cost:array[1..50,1..50]of longint;
mincost,closed:array[1..50]of longint;
min,k,i,j,n,x,y,sum:longint;
begin
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
read(cost[i,j]);
if(i<>j) and(cost[i,j]=0)then cost[i,j]:=maxint;
end;
sum:=0;
for i:=1 to n do
begin
mincost[i]:=cost[1,i];
closed[i]:=1;
end;
for i:=2 to n do
begin
min:=maxint;
for j:=1 to n do
if(mincost[j]<min)and(mincost[j]<>0)then
begin
min:=mincost[j];
k:=j;
end;
sum:=sum+min;
mincost[k]:=0;
for j:=1 to n do
if(mincost[j]>cost[k,j])and(mincost[j]<>0) then
begin
mincost[j]:=cost[k,j];
closed[j]:=k;
end;
end;
writeln(sum);
end.
/**************************************************************
Problem: 2162
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/