import java.util.Scanner;

public class Main {

	/**
	 * 4
	 * 0 2 4 0
	 * 2 0 3 5
	 * 4 3 0 1
	 * 0 5 1 0
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int[][] weight = new int[n][n];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				weight[i][j] = in.nextInt();
			}
		}
		Prim prim = new Prim(n);
		MinTree minTree = new MinTree();
		minTree.create(n, prim, weight);
		minTree.prim(prim, 0);
	}
	
	private static class MinTree{
		public int[] visited;
		public int len;
		
		public void create(int vertx, Prim prim, int[][] weight) {
			this.len = vertx;
			this.visited = new int[len];
			prim.weight = weight;
		}
		
		public void prim(Prim prim, int v) {
			this.visited = new int[len];
			visited[v] = 1;
			int min;
			int t = -1;
			int res = 0;
			for (int i = 1; i < len; i++) {
				min = Integer.MAX_VALUE;
				for (int j = 0; j < len; j++) {
					for (int k = 0; k < len; k++) {
						if (prim.weight[j][k] != 0 && visited[j] == 1 && visited[k] == 0 && prim.weight[j][k] < min) {
							t = k;
							min = prim.weight[j][k];
						}
					}
				}
				if (t != -1) {
					visited[t] = 1;
					res += min;
				}
			}
			System.out.println(res);
		}
	}
	
	private static class Prim{
		int[][] weight;
		int vertx;
		
		public Prim(int vertx) {
			this.vertx = vertx;
			this.weight = new int[vertx][vertx];
		}
	}
}

/**************************************************************
	Problem: 2162
	User: admin
	Language: Java
	Result: Accepted
	Time:777 ms
	Memory:41668 kb
****************************************************************/