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
****************************************************************/