import sys
# 输入
square_array =[]
N = sys.stdin.readline().rstrip("\n")for i inrange(0,int(N)):
row =[]
line = sys.stdin.readline().rstrip("\n")
temp_str = line.split(" ")for str_ in temp_str:
row.append(int(str_))
square_array.append(row)
M = sys.stdin.readline().rstrip("\n")# 旋转处理
L =int(N)
M =int(M)%4# 最初比较冗杂的代码"""
# rotate_array = square_array.copy() # 之前出错,存在二维列表的浅复制问题,一维不存在这个问题
rotate_array = [([0]*L) for i in range(L)] # 为了避免这种情况,使用二维列表推导式
if M % 4 == 0:
rotate_array = [item for item in square_array]
if M % 4 == 1:
for row_ix in range(L):
for col_ix in range(L):
# 原矩阵逐列赋值给旋转矩阵的每一行
rotate_array[row_ix][col_ix] = square_array[L-1-col_ix][row_ix]
if M % 4 == 2:
for row_ix in range(L):
for col_ix in range(L):
# 原矩阵逐列赋值给旋转矩阵的每一行
rotate_array[col_ix][row_ix] = square_array[L-1-col_ix][L-1-row_ix]
if M % 4 == 3:
for row_ix in range(L):
for col_ix in range(L):
# 原矩阵逐列赋值给旋转矩阵的每一行
rotate_array[row_ix][col_ix] = square_array[col_ix][L-1-row_ix]
"""# 升级版,封装为函数,递归实现defrotate_matrix(handled_array, order):
rotate =[([0]* order)for _ inrange(order)]for row_index inrange(order):for col_index inrange(order):# 原矩阵逐列赋值给旋转矩阵的每一行
rotate[row_index][col_index]= handled_array[order-1-col_index][row_index]return rotate
rotate_array =[item for item in square_array]for i inrange(M):
rotate_array = rotate_matrix(rotate_array, L)# 输出for row in rotate_array:
row_str =""for item in row:
row_str +=str(item)+" "print(row_str)