#include<cstdio>
#include<iostream>
using namespace std;
int a[501][501];
void solve(int x,int y,int r,int z){
for(int i=x-r;i<=x+r;i++){
for(int j=y-r;j<=i;j++){
int temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}//转置该数组
if(z==0){
for(int i=y-r;i<=y;i++){
for(int j=x-r;j<=x+r;j++){
int temp=a[j][i];
a[j][i]=a[j][2*y-i];
a[j][2*y-i]=temp;
}
}
}//交换列
else{
for(int i=x-r;i<=x;i++){
for(int j=y-r;j<=y+r;j++){
int temp=a[i][j];
a[i][j]=a[2*x-i][j];
a[2*x-i][j]=temp;
}
}
}//交换行
}
int main(){
int n,m;
int tmp=1;
int x,y,r,z;
scanf("%d%d",&n,&m);
//填充
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]=tmp;
tmp++;
}
}
//处理
for(int i=1;i<=m;i++){
scanf("%d%d%d%d",&x,&y,&r,&z);
solve(x,y,r,z);
}
//输出
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}