#include <cstdio>
#include <cstring>

int n,k,m, c, x1, y1, x2, y2, tu, zamjeni(int x), broj=-1, x;
char ime;
struct polje{
	   int mapa[1000][1000];
}tren, save[25];
void printaj();

int main(){
	scanf ("%d %d %d", &n, &k, &m);
	for (int i=0; i<n; ++i)
		for (int j=0; j<n; ++j)
			tren.mapa[i][j]=1;
	

	for (int i=0; i<m; ++i){
		scanf (" %c", &ime);
  		if (ime=='P'){
	 	   for (int j=1; j<5; ++j)
			   scanf ("%*c");
		   scanf ("%d %d %d %d %d", &c, &x1, &y1, &x2, &y2);  
		   tu=y1%2;
		   for (int k=x1; k<=x2; ++k){
		   	   for (int l=y1; l<=y2; ++l){
			   	   if (l%2==tu) tren.mapa[k][l]=c;
			   	   
			   }
			   tu=zamjeni(tu);
		   } 
	    }
	    else if (ime=='S'){
           for (int j=1; j<4; ++j)
           	   scanf ("%*c");
       	   broj++;
       	   for (int j=0; j<n; ++j)
       	   	   for (int k=0; k<n; ++k)
       	   	   	   save[broj].mapa[j][k]=tren.mapa[j][k];
		
		}
		else if (ime=='L'){
	       for (int j=0; j<4; ++j)
	       	   scanf ("%*c");
    	   scanf ("%d", &x);
    	   for (int j=0; j<n; ++j)
    	   	   for (int k=0; k<n; ++k)
    	   	   	   tren.mapa[j][k]=save[x-1].mapa[j][k];
    	   
		} 
		
	}
	
	printaj();


    scanf ("%*c%*c");
    return 0;
}
int zamjeni(int a){
	if (a==0) return 1;
	return 0;
}
void printaj(){
for (int i=0; i<n; ++i){
		for (int j=0; j<n; ++j)
			printf ("%d ", tren.mapa[i][j]);
		printf ("\n");
	}
	printf ("\n\n");
}
