#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <iterator>
#include <queue>
#define MAX(a,b) (a>b)?a:b
#define MIN(a,b) (a>b)?b:a
using namespace std;
typedef long long int llint;
typedef long int lint;
template <typename T_>
void fastread(T_ *a)
{
char c=0; *a=0;
while(c<33){c=getchar();}
while(c>33){*a=(*a<<3)+(*a<<1)+c-'0'; c=getchar();}
}
int fast_str(char *a)
{
int len=0; char c=0;
while(c<33){c=getchar();}//eat spaces
while(c!='\n'){*a=c; ++len; ++a; c=getchar();}
*a='\0';
return len;
}
int fast_wrd(char *a)
{
char c=0; int len=0;
while(c<33){c=getchar();}
while(c>33){*a=c; ++len; ++a; c=getchar();}
*a='\0';
return len;
}
void fast_wrt(char *a)
{
while(*a!='\0')
{
putchar(*a);
++a;
}
}
int getDir(llint x1,llint y1,llint x2,llint y2)
{
if(y2>y1)//------> '/' is up
return 1;
else //------> '\' is down
return 2;
}
bool customSortFunction(const pair<llint,pair<llint,llint> >& a,const pair<llint,pair<llint,llint> >& b)
{
return ((a.second.second>b.second.second));
}
int main()
{
//freopen("out.txt","w",stdout);
vector<pair<llint,llint> > myvec;
llint points;
fastread(&points);
llint x=0,y=0,tx,ty,toggle=0;
myvec.push_back(make_pair(x,y));
for(llint i=0;i<points;++i)
{
//cout<<i<<endl;
//generate all points according to input and store
fastread(&tx);
if(toggle)
{
x += tx;
y = y+ (-1*tx);
}
else
{
x += tx;
y += tx;
}
toggle = !toggle;
myvec.push_back(make_pair(x,y));
}
vector<pair<llint,pair<llint,llint> > > allpoints;
vector<pair<llint,pair<llint,llint> > >::iterator itr;
pair<llint,llint>ptemp;
for(int i=0;i<myvec.size()-1;++i)
{
//storing all intermediate points in the ECG graph
llint xnow,ynow,xlast,ylast;
xnow=myvec.at(i).first;
ynow=myvec.at(i).second;
xlast=myvec.at(i+1).first;
ylast=myvec.at(i+1).second;
int direction=getDir(xnow,ynow,xlast,ylast);
switch(direction)
{
case 1:
while(xnow<xlast)
{
ptemp=make_pair(xnow,ynow);
//store direction along the points
allpoints.push_back(pair<llint,pair<llint,llint> >(direction,ptemp));
++xnow; ++ynow;
}
break;
case 2:
while(xnow!=xlast)
{
ptemp = make_pair(xnow,ynow-1);
//store direction along the points
allpoints.push_back(pair<llint,pair<llint,llint> >(direction,ptemp));
++xnow;
--ynow;
}
break;
}
}//all points inserted
//now sort custom
sort(allpoints.begin(),allpoints.end(),customSortFunction);
/*
for(int i=0;i<allpoints.size();++i)
{
cout<<allpoints.at(i).first<<" "<<allpoints.at(i).second.first<<","<<allpoints.at(i).second.second<<endl;
}
*/
/**
backslash ascii
**/
char c=92;
/****/
llint currentY,j;
/**
* start plot
* top-down plotting
**/
for(llint i=0;i<allpoints.size();++i)
{
currentY=allpoints.at(i).second.second;
llint previous=0,x;
//plot all points in the same horizontal line
for(j=i;j<allpoints.size()&&allpoints.at(j).second.second==currentY;++j)
{
//print spaces
for(x=previous;x<allpoints.at(j).second.first;++x)
{
cout<<" ";
}
//print according to direction
if(allpoints.at(j).first==1)
cout<<"/";
else
cout<<c; //special backslash or '\'
previous = x+1; //cursor continuation
}
for(llint y=x;y<allpoints.at(allpoints.size()-1).second.first;++y)
cout<<" ";
cout<<endl;//avoiding the final endl as it counts spaces while checking
i=j-1;//continuation chained
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8cXVldWU+CgojZGVmaW5lIE1BWChhLGIpIChhPmIpP2E6YgojZGVmaW5lIE1JTihhLGIpIChhPmIpP2I6YQp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGxpbnQ7CnR5cGVkZWYgbG9uZyBpbnQgbGludDsKdGVtcGxhdGUgPHR5cGVuYW1lIFRfPgp2b2lkIGZhc3RyZWFkKFRfICphKQp7CiAgICBjaGFyIGM9MDsgKmE9MDsKICAgIHdoaWxlKGM8MzMpe2M9Z2V0Y2hhcigpO30KICAgIHdoaWxlKGM+MzMpeyphPSgqYTw8MykrKCphPDwxKStjLScwJzsgYz1nZXRjaGFyKCk7fQp9CgppbnQgZmFzdF9zdHIoY2hhciAqYSkKewogICAgaW50IGxlbj0wOyBjaGFyIGM9MDsKICAgIHdoaWxlKGM8MzMpe2M9Z2V0Y2hhcigpO30vL2VhdCBzcGFjZXMKICAgIHdoaWxlKGMhPSdcbicpeyphPWM7ICsrbGVuOyArK2E7IGM9Z2V0Y2hhcigpO30KICAgICphPSdcMCc7CiAgICByZXR1cm4gbGVuOwp9CgppbnQgZmFzdF93cmQoY2hhciAqYSkKewogICAgY2hhciBjPTA7IGludCBsZW49MDsKICAgIHdoaWxlKGM8MzMpe2M9Z2V0Y2hhcigpO30KICAgIHdoaWxlKGM+MzMpeyphPWM7ICsrbGVuOyArK2E7IGM9Z2V0Y2hhcigpO30KICAgICphPSdcMCc7CiAgICByZXR1cm4gbGVuOwp9Cgp2b2lkIGZhc3Rfd3J0KGNoYXIgKmEpCnsKICAgIHdoaWxlKCphIT0nXDAnKQogICAgewogICAgICAgIHB1dGNoYXIoKmEpOwogICAgICAgICsrYTsKICAgIH0KfQoKCgppbnQgZ2V0RGlyKGxsaW50IHgxLGxsaW50IHkxLGxsaW50IHgyLGxsaW50IHkyKQp7CiAgICBpZih5Mj55MSkvLy0tLS0tLT4gICAgICAnLycgaXMgdXAKICAgICAgICByZXR1cm4gMTsKICAgIGVsc2UgICAgIC8vLS0tLS0tPiAgICAgICdcJyBpcyBkb3duCiAgICAgICAgcmV0dXJuIDI7Cn0KCmJvb2wgY3VzdG9tU29ydEZ1bmN0aW9uKGNvbnN0IHBhaXI8bGxpbnQscGFpcjxsbGludCxsbGludD4gPiYgYSxjb25zdCBwYWlyPGxsaW50LHBhaXI8bGxpbnQsbGxpbnQ+ID4mIGIpCnsKICAgIHJldHVybiAoKGEuc2Vjb25kLnNlY29uZD5iLnNlY29uZC5zZWNvbmQpKTsKfQoKaW50IG1haW4oKQp7CiAgICAvL2ZyZW9wZW4oIm91dC50eHQiLCJ3IixzdGRvdXQpOwogICAgdmVjdG9yPHBhaXI8bGxpbnQsbGxpbnQ+ID4gbXl2ZWM7CiAgICBsbGludCBwb2ludHM7CiAgICBmYXN0cmVhZCgmcG9pbnRzKTsKICAgIGxsaW50IHg9MCx5PTAsdHgsdHksdG9nZ2xlPTA7CiAgICBteXZlYy5wdXNoX2JhY2sobWFrZV9wYWlyKHgseSkpOwogICAgZm9yKGxsaW50IGk9MDtpPHBvaW50czsrK2kpCiAgICB7CiAgICAgICAgLy9jb3V0PDxpPDxlbmRsOwogICAgICAgIC8vZ2VuZXJhdGUgYWxsIHBvaW50cyBhY2NvcmRpbmcgdG8gaW5wdXQgYW5kIHN0b3JlCiAgICAgICAgZmFzdHJlYWQoJnR4KTsKICAgICAgICBpZih0b2dnbGUpCiAgICAgICAgewogICAgICAgICAgICB4ICs9IHR4OwogICAgICAgICAgICB5ID0geSsgKC0xKnR4KTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgeCArPSB0eDsKICAgICAgICAgICAgeSArPSB0eDsKICAgICAgICB9CiAgICAgICAgdG9nZ2xlID0gIXRvZ2dsZTsKICAgICAgICBteXZlYy5wdXNoX2JhY2sobWFrZV9wYWlyKHgseSkpOwogICAgfQoKICAgIHZlY3RvcjxwYWlyPGxsaW50LHBhaXI8bGxpbnQsbGxpbnQ+ID4gPiBhbGxwb2ludHM7CiAgICB2ZWN0b3I8cGFpcjxsbGludCxwYWlyPGxsaW50LGxsaW50PiA+ID46Oml0ZXJhdG9yIGl0cjsKICAgIHBhaXI8bGxpbnQsbGxpbnQ+cHRlbXA7CiAgICBmb3IoaW50IGk9MDtpPG15dmVjLnNpemUoKS0xOysraSkKICAgIHsKICAgICAgICAvL3N0b3JpbmcgYWxsIGludGVybWVkaWF0ZSBwb2ludHMgaW4gdGhlIEVDRyBncmFwaAogICAgICAgIGxsaW50IHhub3cseW5vdyx4bGFzdCx5bGFzdDsKICAgICAgICB4bm93PW15dmVjLmF0KGkpLmZpcnN0OwogICAgICAgIHlub3c9bXl2ZWMuYXQoaSkuc2Vjb25kOwogICAgICAgIHhsYXN0PW15dmVjLmF0KGkrMSkuZmlyc3Q7CiAgICAgICAgeWxhc3Q9bXl2ZWMuYXQoaSsxKS5zZWNvbmQ7CiAgICAgICAgaW50IGRpcmVjdGlvbj1nZXREaXIoeG5vdyx5bm93LHhsYXN0LHlsYXN0KTsKICAgICAgICBzd2l0Y2goZGlyZWN0aW9uKQogICAgICAgIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHdoaWxlKHhub3c8eGxhc3QpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHB0ZW1wPW1ha2VfcGFpcih4bm93LHlub3cpOwogICAgICAgICAgICAgICAgLy9zdG9yZSBkaXJlY3Rpb24gYWxvbmcgdGhlIHBvaW50cwogICAgICAgICAgICAgICAgYWxscG9pbnRzLnB1c2hfYmFjayhwYWlyPGxsaW50LHBhaXI8bGxpbnQsbGxpbnQ+ID4oZGlyZWN0aW9uLHB0ZW1wKSk7CiAgICAgICAgICAgICAgICArK3hub3c7ICsreW5vdzsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICB3aGlsZSh4bm93IT14bGFzdCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHRlbXAgPSBtYWtlX3BhaXIoeG5vdyx5bm93LTEpOwogICAgICAgICAgICAgICAgLy9zdG9yZSBkaXJlY3Rpb24gYWxvbmcgdGhlIHBvaW50cwogICAgICAgICAgICAgICAgYWxscG9pbnRzLnB1c2hfYmFjayhwYWlyPGxsaW50LHBhaXI8bGxpbnQsbGxpbnQ+ID4oZGlyZWN0aW9uLHB0ZW1wKSk7CiAgICAgICAgICAgICAgICArK3hub3c7CiAgICAgICAgICAgICAgICAtLXlub3c7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfS8vYWxsIHBvaW50cyBpbnNlcnRlZAoKICAgIC8vbm93IHNvcnQgY3VzdG9tCiAgICBzb3J0KGFsbHBvaW50cy5iZWdpbigpLGFsbHBvaW50cy5lbmQoKSxjdXN0b21Tb3J0RnVuY3Rpb24pOwoKICAgIC8qCiAgICBmb3IoaW50IGk9MDtpPGFsbHBvaW50cy5zaXplKCk7KytpKQogICAgewogICAgICAgIGNvdXQ8PGFsbHBvaW50cy5hdChpKS5maXJzdDw8IiAiPDxhbGxwb2ludHMuYXQoaSkuc2Vjb25kLmZpcnN0PDwiLCI8PGFsbHBvaW50cy5hdChpKS5zZWNvbmQuc2Vjb25kPDxlbmRsOwogICAgfQogICAgKi8KCgogICAgLyoqCiAgICBiYWNrc2xhc2ggYXNjaWkKICAgICoqLwogICAgY2hhciBjPTkyOwogICAgLyoqKiovCgoKICAgIGxsaW50IGN1cnJlbnRZLGo7CiAgICAvKioKICAgICogc3RhcnQgcGxvdAogICAgKiB0b3AtZG93biBwbG90dGluZwogICAgKiovCiAgICBmb3IobGxpbnQgaT0wO2k8YWxscG9pbnRzLnNpemUoKTsrK2kpCiAgICB7CiAgICAgICAgY3VycmVudFk9YWxscG9pbnRzLmF0KGkpLnNlY29uZC5zZWNvbmQ7CiAgICAgICAgbGxpbnQgcHJldmlvdXM9MCx4OwogICAgICAgIC8vcGxvdCBhbGwgcG9pbnRzIGluIHRoZSBzYW1lIGhvcml6b250YWwgbGluZQogICAgICAgIGZvcihqPWk7ajxhbGxwb2ludHMuc2l6ZSgpJiZhbGxwb2ludHMuYXQoaikuc2Vjb25kLnNlY29uZD09Y3VycmVudFk7KytqKQogICAgICAgIHsKICAgICAgICAgICAgLy9wcmludCBzcGFjZXMKICAgICAgICAgICAgZm9yKHg9cHJldmlvdXM7eDxhbGxwb2ludHMuYXQoaikuc2Vjb25kLmZpcnN0OysreCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY291dDw8IiAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vcHJpbnQgYWNjb3JkaW5nIHRvIGRpcmVjdGlvbgogICAgICAgICAgICBpZihhbGxwb2ludHMuYXQoaikuZmlyc3Q9PTEpCiAgICAgICAgICAgICAgICBjb3V0PDwiLyI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNvdXQ8PGM7IC8vc3BlY2lhbCBiYWNrc2xhc2ggb3IgJ1wnCiAgICAgICAgICAgIHByZXZpb3VzID0geCsxOyAvL2N1cnNvciBjb250aW51YXRpb24KICAgICAgICB9CiAgICAgICAgZm9yKGxsaW50IHk9eDt5PGFsbHBvaW50cy5hdChhbGxwb2ludHMuc2l6ZSgpLTEpLnNlY29uZC5maXJzdDsrK3kpCiAgICAgICAgICAgIGNvdXQ8PCIgIjsKICAgICAgICBjb3V0PDxlbmRsOy8vYXZvaWRpbmcgdGhlIGZpbmFsIGVuZGwgYXMgaXQgY291bnRzIHNwYWNlcyB3aGlsZSBjaGVja2luZwogICAgICAgIGk9ai0xOy8vY29udGludWF0aW9uIGNoYWluZWQKICAgIH0KCgogICAgcmV0dXJuIDA7Cn0K