#include <bits/stdc++.h>
using namespace std;
int main() {
  int a, b, c, d, N;
  cin >> a >> b >> c >> d >> N;
  vector<int> x(N);
  for (int i = 0; i < N; i++) cin >> x[i];
  int H = max(b, d);
  int W = a + c;
  vector<string> field(H, string(W, '.'));
  int i, j, dir;
  if (b > d) {
    if ((b - d) % 2 == 0) {
      j = 0;
      dir = 1;
    } else {
      j = a - 1;
      dir = -1;
    }
    int n = 0;
    for (i = H - 1; i >= 0; i--) {
      int w;
      if (i < d)
        w = W;
      else
        w = a;
      while (0 <= j && j < w) {
        field[i][j] = 'a' + n;
        if (--x[n] == 0) n++;
        j += dir;
      }
      if (j < 0) j = 0;
      if (j >= w) j = w - 1;
      dir *= -1;
    }
  } else {
    if ((d - b) % 2 == 0) {
      j = W - 1;
      dir = -1;
    } else {
      j = a;
      dir = 1;
    }
    int n = 0;
    for (int i = H - 1; i >= 0; i--) {
      int s;
      if (i < b)
        s = 0;
      else
        s = a;
      while (s <= j && j < W) {
        field[i][j] = 'a' + n;
        if (--x[n] == 0) n++;
        j += dir;
      }
      if (j < s) j = s;
      if (j >= W) j = W - 1;
      dir *= -1;
    }
  }
  cout << "YES" << endl;
  for (int i = 0; i < H; i++) {
    cout << field[i] << endl;
  }
  return 0;
}
