#include <bits/stdc++.h>
using namespace std;
const int N = 5, M = 20;
int n, m, a[N], b[M], ans[M];
set<vector<int> > use[M + 1];
void find(int y, vector<int>& current) {
  if (y == m) {
    for (int i = 0; i < n; i++)
      if (a[i] != current[i]) return;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) cout << ".*"[(bool)(ans[j] & (1 << i))];
      cout << endl;
    }
    exit(0);
  }
  if (use[y].find(current) != use[y].end()) return;
  for (int i = 0; i < (1 << n); i++) {
    if ((((((((i << 1) | i) ^ i) >> 1) >> 0)) & 1) +
            (((((((i << 1) | i) ^ i) >> 1) >> 1)) & 1) +
            (((((((i << 1) | i) ^ i) >> 1) >> 2)) & 1) +
            (((((((i << 1) | i) ^ i) >> 1) >> 3)) & 1) +
            (((((((i << 1) | i) ^ i) >> 1) >> 4)) & 1) !=
        b[y])
      continue;
    ans[y] = i;
    vector<int> newCur = current;
    bool flag = true;
    for (int j = 0; j < n; j++) {
      if (ans[y] & (1 << j) && (!y || !(ans[y - 1] & (1 << j)))) newCur[j]++;
      if (newCur[j] > a[j] || newCur[j] < a[j] - ((m - y) / 2)) {
        flag = false;
        break;
      }
    }
    if (flag) find(y + 1, newCur);
  }
  use[y].insert(current);
}
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];
  vector<int> c(n + 1, 0);
  find(0, c);
}
