#include <bits/stdc++.h>
using namespace std;
const int INF = 2147483647;
const double PI = 3.141592653589793;
int a, b, c, d, n, e, i, j, bat[105][105], tab[105][105], px, py, kx, ky;
void przydziel(int a, int b) {
  while (a > 0) {
    tab[px][py] = b;
    if (bat[px][py + ky] == 0) {
      px += kx;
      ky *= (-1);
    } else
      py += ky;
    a--;
  }
}
int main() {
  scanf("%d %d %d %d %d", &a, &b, &c, &d, &n);
  for (i = 0; i <= max(b, d) + 1; i++)
    for (j = 0; j <= a + c + 1; j++)
      if ((j >= 1 && j <= a && i >= 1 && i <= b) ||
          (j >= a + 1 && j <= a + c && i >= 1 && i <= d))
        bat[j][i] = 1;
      else
        bat[j][i] = 0;
  if (d < b) {
    kx = -1;
    px = a + c;
    if (c % 2 == 0) {
      ky = 1;
      py = 1;
    } else {
      ky = -1;
      py = d;
    }
  } else {
    kx = 1;
    px = 1;
    if (a % 2 == 0) {
      ky = 1;
      py = 1;
    } else {
      ky = -1;
      py = b;
    }
  }
  for (i = 0; i < n; i++) {
    scanf("%d", &e);
    przydziel(e, i);
  }
  printf("YES\n");
  for (j = 1; j <= max(b, d); j++) {
    for (i = 1; i <= a + c; i++)
      if ((i >= 1 && i <= a && j >= 1 && j <= b) ||
          (i >= a + 1 && i <= a + c && j >= 1 && j <= d))
        printf("%c", tab[i][j] + 97);
      else
        printf(".");
    printf("\n");
  }
  return 0;
}
