from __future__ import print_function
from sys import stdin

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

# matrixout 함수가 정방행렬 mx를 출력
def matrixout(mx, size):
    print("\u250c                  \u2510")
    for i in range(0, size):
        print("| ", end = "")
        for j in range(0, size):
            print("%3d" % mx[i][j], end = " ")
        print(" |")
    print("\u2514                  \u2518")

arr_1 = [[1,2,3,4],[4,3,2,1],[2,5,7,9],[6,3,2,1]]   # 정방행렬 arr_1
arr_2 = [[1,5,6,7],[8,3,1,7],[6,2,8,3],[9,2,1,2]]   # 정방행렬 arr_2

# 정방행렬 arr_1을 출력
printf("행렬 A : \n")
matrixout(arr_1, 4)

printf("\n\n")

# 정방행렬 arr_2를 출력
printf("행렬 B : \n")
matrixout(arr_2, 4)

printf("\n\n")

# 정방행렬 res를 0으로 초기화
res = [[0 for _ in range(4)] for _ in range(4)]

# 삼중 for 문은 (i, j, k 순으로) 정방행렬 arr_1과 arr_2를 곱함 
printf("A x B (i,j,k 순으로) : \n")
for i in range(0, 4):
    for j in range(0, 4):
        for k in range(0, 4):
            res[i][j] += arr_1[i][k] * arr_2[k][j]

# 정방행렬 res를 출력
matrixout(res, 4)

# 정방행렬 res를 0으로 재초기화
res = [[0 for _ in range(4)] for _ in range(4)]

# 삼중 for 문은 (i, k, j 순으로) 정방행렬 arr_1과 arr_2를 곱함 
printf("\n\nA x B (i,k,j 순으로) : \n")
for i in range(0, 4):
    for k in range(0, 4):
        for j in range(0, 4):
            res[i][j] += arr_1[i][k] * arr_2[k][j]

# 정방행렬 res를 출력
matrixout(res, 4)

printf("\n\n결과는 같다. \n")
stdin.readline()
