from __future__ import print_function
from sys import stdin

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

# print_matrix 함수가 부울행렬 x를 출력
def print_matrix(x):
    print("\u250c       \u2510")
    for i in range(0, maxvalue):
        print("|",end = "")
        for j in range(0, maxvalue):
            printf("%2d" % x[i][j])
        print(" |",end = "")
        printf("\n")
    print("\u2514       \u2518")

# mat_compute 함수가 a와 b에 대해 접합, 교합, 부울곱 계산
def mat_compute(a, b):
# 접합, 교합, 부울곱 계산을 위해 삼중 for 문 사용
    for i in range(0, maxvalue):
        for j in range(0, maxvalue):
            for k in range(0, maxvalue):
                c[i][j] = a[i][j] and b[i][j]       # 접합
                d[i][j] = a[i][j] or b[i][j]        # 교합
                # 부울곱
                if k == 0:
                    e[i][j] = a[i][k] * b[k][j]
                else:
                    e[i][j] = e[i][j] or (a[i][k] and b[k][j])

maxvalue = 3                # 정방행렬의 크기를 위한 변수

# mat_compute 함수에서 보조 공간으로 쓰일 부울행렬 정의 및 초기화
c = [[False for _ in range(maxvalue)] for _ in range(maxvalue)]
d = [[False for _ in range(maxvalue)] for _ in range(maxvalue)]
e = [[False for _ in range(maxvalue)] for _ in range(maxvalue)]

# 사용자가 입력할 부울행렬 2개 정의
a = [[False for _ in range(maxvalue)] for _ in range(maxvalue)]
b = [[False for _ in range(maxvalue)] for _ in range(maxvalue)]

# 사용자를 위한 안내 출력
printf("\n")
printf("3x3인 부울행렬 A를 입력하라(0과 1만 사용).\n")
printf("\n[예]\t0 1 0   \n\t0 0 0   \n\t1 0 1\n\n")

list = []    # 사용자가 입력할 부울행렬을 문자열로 받아주는 list 정의 

# 해당 while 문을 통해 사용자로부터 부울행렬을 줄별로 입력
while len(list) < maxvalue * maxvalue:      
    list += stdin.readline().strip("\n").split()

# list에 있는 값들을 a에 대입
for i in range(0, maxvalue):
    for j in range(0, maxvalue):
        a[i][j] = bool(int(list[i*maxvalue + j]))

printf("\n3x3인 부울행렬 B를 입력하라(0과 1만 사용).\n")

list = []    # 사용자가 입력할 부울행렬을 문자열로 받아주는 list 재정의

# 해당 while 문을 통해 사용자로부터 부울행렬을 줄별로 입력
while len(list) < maxvalue * maxvalue:
    list += stdin.readline().strip("\n").split()

# list에 있는 값들을 b에 대입
for i in range(0, maxvalue):
    for j in range(0, maxvalue):
        b[i][j] = bool(int(list[i*maxvalue + j]))

# 부울행렬 a와 b에 대해 접합, 교합, 부울곱을 계산하는 함수 호출
mat_compute(a,b)
printf("\n")

printf("A \u2227 B (접합)\n")
print_matrix(c)                 # 접합 결과를 출력
printf("\n")

printf("A \u2228 B (교합)\n")
print_matrix(d)                 # 교합 결과를 출력
printf("\n")

printf("A \u2299 B (부울곱)\n")
print_matrix(e)                 # 부울곱 결과를 출력

stdin.readline()
