#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 110;
int n,m,q;
char g[N][N];
int st[N][N];//标记是否被染色
int dx[] = {0,-1,0,1},dy[]= {1,0,-1,0};
//注意题目给出的坐标系是数学坐标系,我们做题使用的是数组坐标系,数组坐标系逆时针旋转90度即可变成数学坐标系输出
//与csp4(1)类似
void dfs(int x,int y,int c)
{
st[x][y] = true;
g[x][y] = c;
for(int i = 0; i<4; i++)
{
int a = x+dx[i],b = y+dy[i];
if(a>=0 && a<m && b>=0 && b<n && !st[a][b])
{
if(g[a][b]=='-' || g[a][b]=='|' ||g[a][b]=='+' ) continue;
dfs(a,b,c);
}
}
}
int main()
{
cin>>m>>n>>q;
for(int i = 0; i<m; i++)
for(int j = 0; j<n; j++)
g[i][j] = '.';
while(q--)
{
int op;
cin>>op;
if(op == 0)//画线段
{
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
if(x1>x2) swap(x1,x2);
if(y1>y2) swap(y1,y2);//始终保持(x2,y2)大于(x1,y1)
char c = '-',d = '|';
if(x1==x2) swap(c,d);//横坐标相同华竖线,交换即c='|'
for(int i = x1; i<=x2; i++)
{
for(int j = y1; j<=y2; j++)
{
auto& t = g[i][j];
if(t==d || t=='+') t = '+';
else t = c;
}
}
}
else//染色
{
int x,y;
char c;
cin>>x>>y>>c;
memset(st,0,sizeof st);
dfs(x,y,c);
}
}
for(int i = n-1; i>=0; i--)
{
for(int j = 0; j<m; j++)
cout<<g[j][i];
cout<<endl;
}
return 0;
}