from sys import stdin
import os

def printf(str, *args):
    print(str % args, end='')

MAXITEM = 10    # 관계행렬의 최대 크기를 위한 상수
# 관계행렬의 정의 및 0으로 초기화
m = [[0 for col in range(MAXITEM)] for row in range(MAXITEM)]

# 사용자로부터 관계행렬의 크기와 관계행렬을 입력받기
maxvalue = int(input("입력으로 넣을 관계행렬의 크기를 입력하라.: "))
printf("\n")
print("1과 0으로 구성된 ", maxvalue, "x",maxvalue,  "인 관계행렬을 입력하라.: ",sep = '')

# 한 줄씩 입력될 행을 리스트에 저장
list = []
while len(list) < maxvalue*maxvalue:
    list += stdin.readline().split()

# 문자열로 저장된 리스트를 m에 정수형으로 대입
for i in range(1, maxvalue+1):
    for j in range(1, maxvalue+1):
        m[i][j] = int(list[(i-1)*maxvalue + (j-1)])

print("\n주어진 관계행렬에 대해 길이가 ", 3, "인 경로(들)의 리스트는 다음과 같다.: \n", sep = '')
count = 0

# 행렬 m에 대해 길이가 3인 경로를 계산하면서 출력
for i in range(1, maxvalue+1):
    for j in range(1, maxvalue+1):
        if m[i][j] == 1:
            for x in range(1, maxvalue+1):
                if m[j][x] ==1:
                    for y in range(1, maxvalue+1):
                        if m[x][y] == 1:
                            printf("(%2d%2d%2d%2d) => (%d..%d)\n" %(i,j,x,y,i,y))
                            count = count + 1

# 행렬 m에 길이가 3인 경로가 없으면: 
if count == 0:
    os.system('cls')
    print("\n주어진 관계행렬에 대해 길이가 ", 3, "인 경로가 없다.\n", sep = '')
print()
