#include<iostream>
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int king[1001][1001];
int save[1001][1001];
int snake[1000];
int n,m,s;
void change()
{
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
king[i][j]=save[i][j];
}
void turning1(int x,int y,int r)
{
for (int i=1;i<=(r*2+1);++i)
snake[i]=king[x-r+i-1][y-r];
for (int i=1;i<=(r*2+1);++i)
save[x-r][y+r-i+1]=snake[i];
//左边到上边
for (int i=1;i<=(r*2+1);++i)
snake[i]=king[x-r][y-r+i-1];
for (int i=1;i<=(r*2+1);++i)
save[x-r+i-1][y+r]=snake[i];
//上面到右边
for (int i=1;i<=(r*2+1);++i)
snake[i]=king[x-r+i-1][y+r];
for (int i=1;i<=(r*2+1);++i)
save[x+r][y+r-i+1]=snake[i];
//右面到下面
for (int i=1;i<=(r*2+1);++i)
snake[i]=king[x+r][y+r-i+1];
for (int i=1;i<=(r*2+1);++i)
save[x+r-i+1][y-r]=snake[i];
//下面到左面
change();
}
void turning2(int x,int y,int r)
{
for (int i=1;i<=(r*2+1);++i)
snake[i]=king[x-r][y-r+i-1];
for (int i=1;i<=(r*2+1);++i)
save[x+r-i+1][y-r]=snake[i];
//上边到左边
for (int i=1;i<=(r*2+1);++i)
snake[i]=king[x-r+i-1][y+r];
for (int i=1;i<=(r*2+1);++i)
save[x-r][y-r+i-1]=snake[i];
//上面到右边
for (int i=1;i<=(r*2+1);++i)
snake[i]=king[x+r][y-r+i-1];
for (int i=1;i<=(r*2+1);++i)
save[x+r-i+1][y+r]=snake[i];
//右面到下面
for (int i=1;i<=(r*2+1);++i)
snake[i]=king[x-r+i-1][y-r];
for (int i=1;i<=(r*2+1);++i)
save[x+r][y-r+i-1]=snake[i];
//下面到左面
change();
}
int main()
{
int x1,x2,lar,dir;
s=0;
cin>>n>>m;
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
{
s++;
king[i][j]=s;
save[i][j]=s;
}
// j is the line;
for (int k=1;k<=m;++k)
{
cin>>x1>>x2>>lar>>dir;
for (int ii=lar;ii>=1;--ii)
{
if (dir==1) turning2(x1,x2,ii);
if (dir==0) turning1(x1,x2,ii);
}
}
for (int i=1;i<=n;++i)
{
for (int j=1;j<=n;++j)
cout<<king[i][j]<<' ';
if (i!=n) cout<<endl;
}
return 0;
}