#include <bits/stdc++.h>
using namespace std;
const long double Pi = 3.141592653;
const long long mod = 1e9 + 9;
vector<long long> primes;
long long modoinv(long long a, long long m) {
  long long m0 = m;
  long long y = 0, x = 1;
  if (m == 1) {
    return 0;
  }
  while (a > 1) {
    long long t, q = a / m;
    m = a % m, a = t;
    t = y;
    y = x - q * y;
    x = t;
  }
  if (x < 0) {
    x += m0;
  }
  return x;
}
class Graph {
  map<long long, vector<long long>> ma;

 public:
  void addedge(long long n, long long m) {
    ma[n].push_back(m);
    ma[m].push_back(n);
  }
};
class Node {
 public:
  char data;
  unordered_map<char, Node*> children;
  bool terminal;
  Node(char d) {
    data = d;
    terminal = false;
  }
};
class Trie {
 public:
  Node* root;
  long long cnt;
  Trie() {
    root = new Node('\0');
    cnt = 0;
  }
  void insert(char* w) {
    Node* temp = root;
    for (long long i = 0; w[i] != '\0'; i++) {
      char ch = w[i];
      if (temp->children.count(ch)) {
        temp = temp->children[ch];
      } else {
        Node* n = new Node(ch);
        temp->children[ch] = n;
        temp = n;
      }
    }
    temp->terminal = true;
  }
  bool find(string w) {
    Node* temp = root;
    for (long long i = 0; w[i] != '\0'; i++) {
      char ch = w[i];
      if (temp->children.count(ch) == 0)
        return false;
      else {
        temp = temp->children[ch];
      }
    }
    return temp->terminal;
  }
};
vector<long long> primeFactors(long long n) {
  vector<long long> ans;
  long long cur = 1;
  ans.push_back(1);
  while (n % 2 == 0) {
    cur = cur * 2;
    ans.push_back(cur);
    n = n / 2;
  }
  for (long long i = 3; i * i <= (n); i = i + 2) {
    while (n % i == 0) {
      cur = cur * i;
      ans.push_back(cur);
      n = n / i;
    }
  }
  if (n > 2) ans.push_back(cur * n);
  return ans;
}
void sieve(long long p) {
  vector<bool> mark(p, 1);
  for (long long i = 3; i < p; i += 2) {
    if (mark[i] == 1) {
      for (long long j = i * i; j < p; j += 2 * i) {
        mark[j] = 0;
      }
    }
  }
  primes.push_back(2);
  for (long long i = 3; i < p; i += 2) {
    if (mark[i]) primes.push_back(i);
  }
}
long long mod_exp(long long x, long long n, long long m) {
  if (n == 0) return 1 % m;
  long long a = mod_exp(x, n / 2, m);
  if (n % 2 == 0)
    return (a * a) % m;
  else
    return (x * a * a) % m;
}
bool isPrime(long long n) {
  if (n == 1) return 0;
  if (n == 2) return 1;
  for (long long i = 2; i * i <= n; i++)
    if (n % i == 0) return 0;
  return 1;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long n;
  cin >> n;
  long long y1 = INT_MAX, y2 = 0, i, e, x = 0, y = 0, array[n], k;
  vector<pair<long long, long long>> vec;
  for (i = 0; i < n; i++) {
    cin >> e;
    x += e;
    if (i % 2 == 0)
      y = y + e;
    else
      y = y - e;
    y1 = min(y1, y);
    y2 = max(y2, y);
    vec.push_back({x, y});
    array[i] = e;
  }
  y1 = min(y1, (long long)0);
  char arr[y2 - y1][x];
  long long j, zeroy = -y1 - 1, zerox = -1, prex = 1, prey = 1;
  for (i = 0; i < x; i++)
    for (j = 0; j < (y2 - y1); j++) arr[j][i] = ' ';
  for (i = 0; i < n; i++) {
    k = array[i];
    if (i % 2 == 0) {
      for (j = 0; j < k; j++) {
        arr[zeroy + (prey)][(zerox) + prex] = '/';
        prex++;
        prey++;
      }
    } else {
      for (j = 0; j < k; j++) {
        prey--;
        arr[zeroy + prey][(zerox) + prex] = '\\';
        prex++;
      }
    }
  }
  for (i = y2 - y1 - 1; i >= 0; i--) {
    for (j = 0; j < x; j++) cout << arr[i][j];
    if (i != 0) cout << endl;
  }
}
