n = int(input())
arr = []
check = []
def solve(start, a) :
for i in range(n) :
if arr[a][i] == 1 : #간선이 있다면
if check[a][i] == False : #만약 탐색이 안 되었으면
check[a][i] = True #탐색을 하고
arr[start][i] =1 # 처음 시작한 데서 목적지까지 경로가 있음
solve(start,i)
for i in range(n) :
arr.append(list(map(int,input().split())))
check.append([False] * n)
for i in range(n) :
solve(i,i)
for j in range(n) :
for t in range(n) :
check[j][t] = False
for i in range(n) :
for j in range(n) :
print(arr[i][j], end=" ")
print()
biA9IGludChpbnB1dCgpKQphcnIgPSBbXQpjaGVjayA9IFtdCmRlZiBzb2x2ZShzdGFydCwgYSkgOgoJCQoJCWZvciBpIGluIHJhbmdlKG4pIDoKCQkJaWYgYXJyW2FdW2ldID09IDEgOiAj6rCE7ISg7J20IOyeiOuLpOuptAoJCQkKCQkJCWlmIGNoZWNrW2FdW2ldID09IEZhbHNlIDogI+unjOyVvSDtg5Dsg4nsnbQg7JWIIOuQmOyXiOycvOuptAoJCQkJCWNoZWNrW2FdW2ldID0gVHJ1ZSAj7YOQ7IOJ7J2EIO2VmOqzoAoJCQkJCWFycltzdGFydF1baV0gPTEgIyDsspjsnYwg7Iuc7J6R7ZWcIOuNsOyEnCDrqqnsoIHsp4DquYzsp4AgIOqyveuhnOqwgCDsnojsnYwKCQkJCQkKCQkJCQlzb2x2ZShzdGFydCxpKQoJCQkJCQkJCQkJCQkKCmZvciBpIGluIHJhbmdlKG4pIDoKCWFyci5hcHBlbmQobGlzdChtYXAoaW50LGlucHV0KCkuc3BsaXQoKSkpKQoJY2hlY2suYXBwZW5kKFtGYWxzZV0gKiBuKQoKZm9yIGkgaW4gcmFuZ2UobikgOgoJCglzb2x2ZShpLGkpCglmb3IgaiBpbiByYW5nZShuKSA6CgkJZm9yIHQgaW4gcmFuZ2UobikgOgoJCQljaGVja1tqXVt0XSA9IEZhbHNlCgkKZm9yIGkgaW4gcmFuZ2UobikgOgkKCWZvciBqIGluIHJhbmdlKG4pIDoKCQlwcmludChhcnJbaV1bal0sIGVuZD0iICIpCglwcmludCgpCQoKCQoJCQkJCg==