#输入初始化
maps = [[0] for i in range(500)]
Ins = [[0] for i in range(500)]
Hang = [-1, -1, 1, 1]
Lie = [-1, 1, 1, -1]
n, m = map(int, input().split())
num = 1
for i in range(n):
maps[i] = list(range(num, num+n))
num += n
for i in range(m):
Ins[i] = input().split()
#翻转 for i in range(m):
x = int(Ins[i][0]) - 1
y = int(Ins[i][1]) - 1
r = int(Ins[i][2])
z = int(Ins[i][3])
for j in range(r, 0, -1):#不同阶数
for k in range(j*2):
if z == 0:
maps[x + Hang[0] * j][y + Lie[0] * j + k], maps[x + Hang[1] * j + k][y + Lie[1] * j], \
maps[x + Hang[2] * j][y + Lie[2] * j - k], maps[x + Hang[3] * j - k][y + Lie[3] * j] = \
maps[x + Hang[3] * j - k][y + Lie[3] * j], maps[x + Hang[0] * j][y + Lie[0] * j + k], \
maps[x + Hang[1] * j + k][y + Lie[1] * j], maps[x + Hang[2] * j][y + Lie[2] * j - k]
else:
maps[x + Hang[0] * j][y + Lie[0] * j + k], maps[x + Hang[1] * j + k][y + Lie[1] * j], \
maps[x + Hang[2] * j][y + Lie[2] * j - k], maps[x + Hang[3] * j - k][y + Lie[3] * j] = \
maps[x + Hang[1] * j + k][y + Lie[1] * j], maps[x + Hang[2] * j][y + Lie[2] * j - k], \
maps[x + Hang[3] * j - k][y + Lie[3] * j], maps[x + Hang[0] * j][y + Lie[0] * j + k],
for i in range(n):
for j in range(n):
print(maps[i][j], end=' ')
print()