# 距離の公理 def main(): N = int(input()) check = [True for _ in range(4)] D = [list(map(int, input().split())) for _ in range(N)] for i in range(N): if D[i][i] != 0: check[0] = False for i in range(N): for j in range(N): if D[i][j] != D[j][i]: check[1] = False for i in range(N): for j in range(N): for k in range(N): if D[i][j] > D[i][k] + D[k][j]: check[2] = False check[3] = False elif D[i][j] > max(D[i][k], D[k][j]): check[3] = False if check[0] and check[1] and check[2]: print("Yes") else: print("No") if check[0] and check[1] and check[3]: print("Yes") else: print("No") if __name__ == "__main__": main()