#include <bits/stdc++.h>
using namespace std;
int n, m;
int r[5], c[20];
unsigned was[11][11][11][11][11][20];
vector<int> msks[6];
char ans[5][22];
bool solve(int i, int p) {
  if (i == m) {
    for (int j(0), _B_j(n); j < _B_j; ++j)
      if (r[j] != 0) return false;
    return true;
  }
  for (int i(0), _B_i(5); i < _B_i; ++i)
    if (r[i] < 0) return false;
  unsigned &w = was[r[0]][r[1]][r[2]][r[3]][r[4]][i];
  if (w & (1u << p)) return false;
  w |= 1u << p;
  for (int q : msks[c[i]]) {
    for (int j(0), _B_j(5); j < _B_j; ++j) {
      if (q & 1 << j) {
        ans[j][i] = '*';
        if (~p & 1 << j) --r[j];
      } else {
        ans[j][i] = '.';
      }
    }
    if (solve(i + 1, q)) return true;
    for (int j(0), _B_j(5); j < _B_j; ++j) {
      if ((q & 1 << j) && (~p & 1 << j)) ++r[j];
    }
  }
  return false;
}
int main() {
  cin >> n >> m;
  for (int i(0), _B_i(n); i < _B_i; ++i) cin >> r[i];
  for (int i(0), _B_i(m); i < _B_i; ++i) cin >> c[i];
  for (int p(0), _B_p(1 << n); p < _B_p; ++p) {
    int blocks = 0;
    for (int i(0), _B_i(5); i < _B_i; ++i) {
      if (((p >> i) & 3) == 1) ++blocks;
    }
    msks[blocks].push_back(p);
  }
  bool ok = solve(0, 0);
  assert(ok);
  for (int i(0), _B_i(n); i < _B_i; ++i) puts(ans[i]);
  return 0;
}
