#include<bits/stdc++.h>
using namespace std;
int jz1[5500][5500],jz2[5500][5500];
int n,m;//边长,次数
int x,y,r,z;//行,列,半径,操作
void cz(){
//center:jz[x][y]
int x1,y1,x2,y2;
x1=x-r;
y1=y-r;
x2=x+r;
y2=y+r;
if(z==0){//顺时针
int temp=0;
for(int i=x-r;i<=2*r+x-r;i++)
{
for(int j=y-r;j<=2*r+x-r;j++){
jz2[j][2*r+x-r-temp]=jz1[i][j];
}
temp++;
}
}
else{//逆时针
int temp=2*r;
for(int i=x-r;i<=2*r+x-r;i++)
{
for(int j=2*r+x-r;j>=y-r;j--){
jz2[2*r+x-r-temp][i]=jz1[i][j];
temp--;
}
temp=2*r;
}
}
}
int main(){
cin>>n>>m;
//初始化
int start=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
jz1[i][j]=start;
jz2[i][j]=start;
start++;
}
}
for(int i=1;i<=m;i++){
cin>>x>>y>>r>>z;
cz();
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
jz1[j][k]=jz2[j][k];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<jz2[i][j]<<' ';
}
cout<<endl;
}
return 0;
}