#include<bits/stdc++.h>
#pragma G++ optimize(3)
using namespace std;
#define int long long
int m,n;
int p[12]={0,1,2,5,11,23,47,95,191,383,767,1535};
char a[3500][3500];
int v1[15][3500];
int v2[15][3500];
int vs[15];
struct dlt{
int d,x;
friend bool operator<(dlt a,dlt b){
if(a.d==b.d)return a.x<b.x;
return a.d<b.d;
}
}dt[3500];
int sd;
queue<dlt>q;
map<dlt,bool>v;
void adddlt(int d,int x){
while(!q.empty())q.pop();
q.push({d,x});
while(!q.empty()){
dlt u=q.front();
q.pop();
if(u.d>m)continue;
dt[++sd]=u;
q.push({u.d+1,u.x*2-1});
q.push({u.d+1,u.x*2});
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
memset(a,' ',sizeof(a));
cin>>m>>n;
for(int i=1;i<=n;i++){
int d,x;
cin>>d>>x;
adddlt(d,x);
}
for(int i=1;i<=sd;i++){
v[dt[i]]=1;
}
for(int i=1,j=1;i<=p[m+1]+1;i+=6,j+=2){
a[p[m]+1][i]='o';
a[p[m]+1][i+4]='o';
v1[1][j]=i;
v1[1][j+1]=i+4;
v2[1][j]=p[m]+1;
v2[1][j+1]=p[m]+1;
vs[1]+=2;
}
int k=1;
while(k<m){
for(int i=1;i<=vs[k];i+=2){
bool f1=1,f2=1;
int x1=v2[k][i],y1=v1[k][i];
int x2=v2[k][i+1],y2=v1[k][i+1];
if(v[dlt{m-k+1,i}])f1=0;
if(v[dlt{m-k+1,i+1}])f2=0;
if(k==1&&!f1)a[x1][y1]=' ';
if(k==1&&!f2)a[x2][y2]=' ';
while(y1!=y2){
x1--;
y1++;
x2--;
y2--;
if(f1)a[x1][y1]='/';
if(f2)a[x2][y2]='\\';
}
if(f1||f2)a[x1][y1]='o';
vs[k+1]++;
v1[k+1][vs[k+1]]=y1;
v2[k+1][vs[k+1]]=x1;
}
k++;
}
for(int i=1;i<=p[m]+1;i++){
for(int j=1;j<=p[m+1];j++){
cout<<a[i][j];
}
cout<<"\n";
}
return 0;
}