#include <bits/stdc++.h>
using namespace std;
int main() {
	int N;
	int64_t A[300][300];
	int64_t B[300][300];
	cin >> N;
	for(int i = 0; i < N; i++) {
		for(int j = 0; j < N; j++) {
			cin >> A[i][j];
			B[i][j] = 1;
			if(i == j) B[i][j] = 0;
		}
	}
	// inversed warshall floyd
	for (int i = 0; i < N; i++) { // via
		for(int j = 0; j < N; j++) { // start
			for(int k = 0; k < N; k++) { // goal
				if(A[j][k] > A[j][i] + A[i][k]) { // invalid
					cout << -1 << endl;
					return 0;
				}
				if(A[j][k] == A[j][i] + A[i][k] && i != j && i != k) {
					B[j][k] = 0;
				}
			}
		}
	}
	int64_t L = 0;
	for(int i = 0; i < N; i++) {
		for(int j = 0; j < N; j++) {
			L += A[i][j] * B[i][j];
		}
	}
	cout << (L / 2) << endl;
	return 0;
}