package prim;
import java.util.Scanner;
public class Main {
static int MAX=Integer.MAX_VALUE;
public static void main(String[] args) {
int n;
int[][] A=new int[1001][1001];
Scanner sin=new Scanner(System.in);
while(sin.hasNext()){
n=sin.nextInt();
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
A[i][j]=sin.nextInt();
}
}
System.out.println(prim(A,n));
}
}
public static int prim(int map[][],int n){
int[] dis=new int[1001];
int i, j, min, minID, sum=0;
for(i=0;i<n;i++){
dis[i]=map[0][i];
}
for(i=1;i<n;i++){
min=MAX;
minID=0;
for(j=1;j<n;j++){
if(dis[j]!=0 && dis[j]<min){
min=dis[j];
minID=j;
}
}
if(min==0) return -1;
sum+=min;
dis[minID]=0;
for(j=1;j<n;j++){
if(dis[j]!=0 && dis[j]>map[minID][j]){
dis[j]=map[minID][j];
}
}
}
return sum;
}
}