#include <bits/stdc++.h>
using namespace std;
int m[50][100], x[26], a, b, c, d, n, aac, h;
int main() {
  ios::sync_with_stdio(false);
  cin >> a >> b >> c >> d >> n;
  aac = a + c;
  h = max(b, d);
  if (b > d)
    for (int i = d; i < b; i++)
      for (int j = a; j < aac; j++) m[i][j] = -2;
  else
    for (int i = b; i < d; i++)
      for (int j = 0; j < a; j++) m[i][j] = -2;
  for (int i = 0; i < n; i++) cin >> x[i];
  int sx = 0;
  for (int k = 0; k < n; k++) {
    sx += x[k];
    if (sx >= (a * b)) {
      int xk1 = x[k] - sx + (a * b), xk2 = sx - (a * b);
      x[k] = xk1;
      for (int j = a - 1, down = 1, p = k; j >= 0; j--, down = 1 - down)
        if (down)
          for (int i = 0; i < b; i++)
            if (x[p] > 0) {
              m[i][j] = p;
              x[p]--;
            } else {
              p--;
              m[i][j] = p;
              x[p]--;
            }
        else
          for (int i = b - 1; i >= 0; i--)
            if (x[p] > 0) {
              m[i][j] = p;
              x[p]--;
            } else {
              p--;
              m[i][j] = p;
              x[p]--;
            }
      x[k] = xk2;
      for (int j = a, down = 1, p = k; j < aac; j++, down = 1 - down)
        if (down)
          for (int i = 0; i < d; i++)
            if (x[p] > 0) {
              m[i][j] = p;
              x[p]--;
            } else {
              p++;
              m[i][j] = p;
              x[p]--;
            }
        else
          for (int i = d - 1; i >= 0; i--)
            if (x[p] > 0) {
              m[i][j] = p;
              x[p]--;
            } else {
              p++;
              m[i][j] = p;
              x[p]--;
            }
      break;
    }
  }
  cout << "YES" << endl;
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < aac; j++)
      if (m[i][j] == -2)
        cout << ".";
      else
        cout << static_cast<char>(m[i][j] + 'a');
    cout << endl;
  }
  return 0;
}
