rt.
#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
struct node{
int x,y;
}ch[11+4][1145];
bool f,f1[1145141];
char v[1145*3][1145*3];
int q,w,m,n,a1,b1,b2,sum,cnt,a[1145141]={0,1,2};
void goujian(int x){
int x_1 = x,y = x+a[x-1],y_1 = y,z,z_1;
for(int i = 1;i <= 2*y-1;i+=6){
v[y][i] = v[y][i+4] = 'o';
ch[cnt][++sum].x = y,ch[cnt][sum].y = i;
ch[cnt][++sum].x = y,ch[cnt][sum].y = i+4;
}
--x;
for(int i = y_1-1;i >= 1;--i){
if(i == y-(a[x_1-x]-a[x_1-x-1])-1 || i == 1){
--cnt,sum = 0;
y = i;
z = pow(2,x-1);
for(int j = 1;z;++j){
if(v[i+1][j-1] == '/' && v[i+1][j+1] == '\\'){
v[i][j] = 'o';
ch[cnt][++sum].x = i,ch[cnt][sum].y = j;
--z;
}
}
--x;
}else{
z_1 = 1;
for(int j = 1;j <= y_1+i;++j){
if((v[i+1][j-1] == 'o' || v[i+1][j-1] == '/')){
if(v[i+1][j-1] == '/') v[i][j] = '/';
else
if(f1[z_1] && v[i][j-2] != '\\'){
v[i][j] = '/';
++z_1;
}
}else if((v[i+1][j+1] == 'o' || v[i+1][j+1] == '\\')){
if(v[i+1][j+1] == '\\') v[i][j] = '\\';
else
if(!f1[z_1]){
v[i][j] = '\\';
++z_1;
}
}
}
}
}
}
int main(){
cin >> n >> m;cnt = n;
for(int i=3;i<=20;++i) a[i] = a[i-1]*2+1;
for(int i=1;i<=10000;++i) f1[i] = i%2;
for(int i=1;i<=n;++i) a[i] += a[i-1];
memset(v,' ',sizeof(v));
goujian(n);
for(int i = 1;i <= m;++i){
cin >> q >> w;v[ch[q][w].x][ch[q][w].y] = 'a';
if(v[ch[q][w].x-1][ch[q][w].y-1] == '\\'){
int cn1 = 1,cn2 = 1;
while(v[ch[q][w].x-cn1][ch[q][w].y-cn2] != 'o') v[ch[q][w].x-cn1][ch[q][w].y-cn2] = 'a',++cn1,++cn2;
}else{
int cn1 = 1,cn2 = 1;
while(v[ch[q][w].x-cn1][ch[q][w].y+cn2] != 'o') v[ch[q][w].x-cn1][ch[q][w].y+cn2] = 'a',++cn1,++cn2;
}
}
for(int i = 1;i <= a[n-1]+n;++i){
for(int j = 1;j <= 2*(a[n-1]+n)-1;++j){
if(i != 1 && (v[i][j] == 'a' || v[i-1][j-1] == 'a' || v[i-1][j+1] == 'a')){
if(v[i][j] != ' ') v[i][j] = 'a';
cout << ' ';
continue;
}
cout<<v[i][j];
}
cout << endl;
}
}