#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int N=120;
char map[N][N];
int n,m,q;
bool d[N][N];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
void paint(int x,int y,char c){
d[x][y]=true;
map[x][y]=c;
for(int i=0;i<4;i++){
int x1=x+dx[i];
int y1=y+dy[i];
if(x1>=0&&x1<n&&y1>=0&&y1<m){
if(!d[x1][y1]&&map[x1][y1]!='+'&&map[x1][y1]!='-'&&map[x1][y1]!='|'){
paint(x1,y1,c);
}
}
}
}
void line(int x1,int y1,int x2,int y2){
if(x1==x2){
for(int i=y1;i<=y2;i++){
if(map[x1][i]=='|'||map[x1][i]=='+') map[x1][i]='+';
else map[x1][i]='-';
}
}else if(y1==y2){
for(int i=x1;i<=x2;i++){
if(map[i][y1]=='-'||map[i][y1]=='+') map[i][y1]='+';
else map[i][y1]='|';
}
}
}
int main(){
cin>>m>>n>>q;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
map[i][j]='.';
}
}
while(q--){
int op;
cin>>op;
if(op==0){
//0是画线操作
int x1,x2,y1,y2;
cin>>y1>>x1>>y2>>x2;
if(x1>x2) swap(x1,x2);
if(y1>y2) swap(y1,y2);
line(x1,y1,x2,y2);
}else{
int x,y;
char c;
cin>>y>>x>>c;
memset(d,false,sizeof d);
paint(x,y,c);
}
}
for(int i=n-1;i>=0;i--){
for(int j=0;j<m;j++){
cout<<map[i][j];
}
cout<<endl;
}
return 0;
}