N = int(input()) A = [list(map(int, input().split())) for _ in range(N)] ok = [True for _ in range(4)] ok[0] = all(A[i][i] == 0 for i in range(N)) ok[1] = all(A[i//N][i%N] == A[i%N][i//N] for i in range(N*N)) for i in range(N): for j in range(N): for k in range(N): if A[i][j] > A[i][k]+A[k][j]: ok[2] = False if A[i][j] > max(A[i][k], A[k][j]): ok[3] = False print("Yes" if all([ok[0], ok[1], ok[2]]) else "No") print("Yes" if all([ok[0], ok[1], ok[3]]) else "No")