var a:array[1..100,1..100]of longint;d:array[1..100]of longint;v:array[1..100]of boolean;i,j,n,min,t,now,ans:longint;begin readln(n); for i:=1 to n do begin for j:=1 to n do begin read(a[i,j]); if a[i,j]=0 then a[i,j]:=maxlongint shr 2; if i=j then a[i,j]:=0; end; readln; d[i]:=maxlongint shr 2; end; for i:=1 to n do d[i]:=a[1,i]; d[1]:=0; t:=1; v[1]:=true; while t<n do begin min:=maxlongint; for i:=1 to n do if (d[i]<min) and (not (v[i])) then begin min:=d[i]; now:=i; end; ans:=ans+d[now]; v[now]:=true; d[now]:=0; t:=t+1; for i:=1 to n do if d[i]>a[now,i] then d[i]:=a[now,i]; end; writeln(ans);end.