- 플로이드 워셜 알고리즘 문제
import sys
input = sys.stdin.readline
N = int(input())
graph = [list(map(int, input().strip().split())) for _ in range(N)]
for k in range(N):
for a in range(N):
for b in range(N):
# 직접 가는 경로 or 거쳐 가는 경로
if graph[a][b] == 1 or (graph[a][k] == 1 and graph[k][b] == 1):
graph[a][b] = 1
for i in range(N):
for j in range(N):
print(graph[i][j], end = " ")
print()