
# 45도 시계방향으로 돌렸을 경우
# 1. X의 주 대각선을 ((1,1), (2,2), …, (n, n)) 가운데 열 ((n+1)/2 번째 열)로 옮긴다.
# 2. X의 가운데 열을 X의 부 대각선으로 ((n, 1), (n-1, 2), …, (1, n)) 옮긴다.
# 3. X의 부 대각선을 X의 가운데 행 ((n+1)/2번째 행)으로 옮긴다.
# 4. X의 가운데 행을 X의 주 대각선으로 옮긴다.
# 5. 위 네 가지 경우 모두 원소의 기존 순서는 유지 되어야 한다.
# 6. X의 다른 원소의 위치는 변하지 않는다.
# 45도 반시계방향으로 돌렸을 경우
# 1. x의 주 대각선을 가운데 행으로 옮긴다.
# 2. x의 가운데 열을 x의 주 대각선으로 ((1,1), (2,2) ... (n,n)) 옮긴다.
# 3. x의 부 대각선을 x의 가운데 열로 옮긴다.
# 4. x의 가운데 행을 x의 부 대각선으로 옮긴다.
# 5. 위 네 가지 경우 모두 원소의 기존 순서는 유지 되어야 한다.
# 6. x의 다른 원소의 위치는 변하지 않는다.
# 회전을 할 경우 영향을 받는 곳은 가운데 행과 열, 주부대각선이다.
# 가운데 행, 가운데 열, 주 대각선, 부 대각선 을 잘 찾고 서로 바꾸면 끝!
t = int(input())
for _ in range(t):
n, d = map(int, input().split())
my_arr = []
for _ in range(n):
my_arr.append(list(map(int, input().split())))
while d % 360 != 0:
main_dia, sub_dia, mid_row, mid_col = [], [], [], []
middle = (n + 1) // 2
for i in range(n):
main_dia.append(my_arr[i][i])
sub_dia.append(my_arr[i][n-i-1])
mid_col.append(my_arr[i][middle - 1])
mid_row = my_arr[middle - 1]
if d >= 0 :
# 시계 방향
# 1. 주 대각선 -> 가운데 열
# 2. 가운데 열 -> 부 대각선
# 3. 부 대각선 -> 가운데 행
# 4. 가운데 행 -> 주 대각선
for i in range(n):
my_arr[i][middle - 1] = main_dia[i]
my_arr[i][n-i-1] = mid_col[i]
my_arr[i][i] = mid_row[i]
my_arr[middle - 1][i] = sub_dia[n-i-1]
d -= 45
else:
# 반시계 방향
# 1. 주 대각선 -> 가운데 행
# 2. 가운데 열 -> 주 대각선
# 3. 부 대각선 -> 가운데 열
# 4. 가운데 행(뒤부터) -> 부 대각선
for i in range(n):
my_arr[i][middle - 1] = sub_dia[i]
my_arr[i][n-i-1] = mid_row[n-i-1]
my_arr[i][i] = mid_col[i]
my_arr[middle - 1] = main_dia
d += 45
for i in range(n):
print(*my_arr[i])