#include <bits/stdc++.h>
using namespace std;
const int N = 5 + 2, M = 20 + 2;
int n, m, a[N], b[M], ans[M];
vector<int> vc[N][1 << N];
set<vector<int>> state[M];
bool bit(int x, int b) { return x >> b & 1; }
void bt(int p, vector<int> cur) {
  if (p == m) {
    for (int i = 0; i < n; i++)
      if (cur[i] < a[i]) return;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) cout << ".*"[bit(ans[j], i)];
      cout << endl;
    }
    exit(0);
  }
  if (state[p].count(cur)) return;
  int w = cur[n];
  for (int i = 0; i < n; i++) w |= (a[i] > cur[i]) << i;
  for (auto x : vc[b[p]][w]) {
    bool flag = true;
    vector<int> help = cur;
    for (int i = 0; flag && i < n; i++)
      if (bit(x, i) && !bit(cur[n], i))
        flag &= a[i] - ++help[i] <= (m - p - 1) / 2;
    if (flag) help[n] = ans[p] = x, bt(p + 1, help);
  }
  state[p].insert(cur);
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < m; i++) cin >> b[i];
  for (int msk = 0; msk < 1 << n; msk++) {
    int cnt = 0;
    for (int i = 0; i < n; i++) cnt += bit(msk, i) && (!i || !bit(msk, i - 1));
    int now = 0;
    do {
      vc[cnt][now ^ msk].push_back(msk);
    } while (--now &= (1 << n) - msk - 1);
  }
  bt(0, vector<int>(n + 1, 0));
}
