def output(n, m):
def m1():
num = 0
row, column = -1, -1
for i in range(n // 2):
row +=1
for _ in range(n-1-2*i):
num += 1
column += 1
result[row][column] = num
column += 1
for _ in range(n-1-2*i):
num += 1
result[row][column] = num
row += 1
for _ in range(n-1-2*i):
num += 1
result[row][column] = num
column -= 1
for _ in range(n-1-2*i):
num += 1
result[row][column] = num
row -= 1
def m2():
num = 0
row, column = -1, -1
for i in range(n // 2):
column += 1
for _ in range(n-1-2*i):
row += 1
num += 1
result[row][column] = num
row +=1
for _ in range(n-1-2*i):
num += 1
result[row][column] = num
column += 1
for _ in range(n-1-2*i):
num += 1
result[row][column] = num
row -= 1
for _ in range(n-1-2*i):
num += 1
result[row][column] = num
column -= 1
result = [[0]*n for _ in range(n)]
if m == 1:#順
if n % 2 == 0:
m1()
else:
m1()
idx = (n+1) // 2 -1
result[idx][idx] = n ** 2
else:
if n % 2 == 0:
m2()
else:
m2()
idx = (n+1) // 2 - 1
result[idx][idx] = n**2
return result
def main():
import sys
inp = list(map(int, sys.stdin.read().split()))
T = inp.pop(0)
for a in range(T):
n = inp[2*a]
m = inp[2*a+1]
result = output(n, m)
for line in result:
ans = []
for i in range(len(line)):
if i > 0:
next_num = line[i]
if next_num >= 10 and next_num < 100:
width = 3
elif next_num >= 100 and next_num < 1000:
width = 2
elif next_num >= 1000:
width = 1
else:
width = 4
ans.append(" " * width)
ans.append(str(line[i]))
print("".join(ans))
print()
if __name__ == "__main__":
main()