#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void checkMin(T &a, T b) {
  if (b < a) a = b;
}
template <typename T>
inline void checkMax(T &a, T b) {
  if (a < b) a = b;
}
int n, m, a[5];
vector<int> g[6];
struct State {
  int mask, c[5];
  const State *pre;
  bool operator<(const State &rhs) const {
    if (mask != rhs.mask) return mask < rhs.mask;
    for (int i = 0; i < int(n); ++i)
      if (c[i] != rhs.c[i]) return c[i] < rhs.c[i];
    return false;
  }
  void add(int m, State &t) const {
    t.mask = m;
    t.pre = this;
    for (int i = 0; i < int(n); ++i) {
      t.c[i] = c[i] + (!((mask >> i) & 1) && ((m >> i) & 1));
    }
  }
};
inline int count_it(int mask) {
  bool prev = false;
  int ans = 0;
  for (int i = 0; i < int(n); ++i) {
    if ((mask >> i) & 1) {
      ans += !prev;
      prev = true;
    } else {
      prev = false;
    }
  }
  return ans;
}
char ans[5][21];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < int(n); ++i) scanf("%d", &a[i]);
  for (int i = 0; i < int(1 << n); ++i) {
    g[count_it(i)].push_back(i);
  }
  State t;
  t.mask = 0;
  for (int i = 0; i < int(n); ++i) t.c[i] = 0;
  t.pre = nullptr;
  set<State> mp[21];
  mp[0].insert(t);
  for (int j = 0; j < int(m); ++j) {
    int b;
    scanf("%d", &b);
    for (const State &s : mp[j]) {
      for (int mask : g[b]) {
        s.add(mask, t);
        bool ok = true;
        for (int i = 0; i < int(n); ++i) {
          if (t.c[i] > a[i]) {
            ok = false;
            break;
          }
          if (((m - j - 1 + !((t.mask >> i) & 1)) >> 1) < a[i] - t.c[i]) {
            ok = false;
            break;
          }
        }
        if (ok) {
          mp[j + 1].insert(t);
        }
      }
    }
  }
  const State *p = nullptr;
  for (const State &s : mp[m]) {
    bool ok = true;
    for (int i = 0; i < int(n); ++i) {
      if (s.c[i] != a[i]) {
        ok = false;
        break;
      }
    }
    if (ok) {
      p = &s;
      break;
    }
  }
  for (int i = m - 1; i >= 0; --i) {
    for (int j = 0; j < int(n); ++j) {
      ans[j][i] = (p->mask >> j) & 1 ? '*' : '.';
    }
    p = p->pre;
  }
  for (int j = 0; j < int(n); ++j) {
    ans[j][m] = '\0';
    printf("%s\n", ans[j]);
  }
  return 0;
}
