#include <bits/stdc++.h>
using namespace std;
char matr[100][100];
int A, B, C, D, N;
int dirs[3][2] = {{0, 1}, {0, -1}, {1, 0}};
int main() {
  scanf("%d%d%d%d%d", &A, &B, &C, &D, &N);
  for (int i = 0; i < 100; i++)
    for (int j = 0; j < 100; j++) matr[i][j] = '.';
  for (int i = 0; i < B; i++)
    for (int j = 0; j < A; j++) matr[i][j] = '*';
  for (int i = 0; i < D; i++)
    for (int j = A; j < A + C; j++) matr[i][j] = '*';
  int x = 0;
  int y = 0;
  if ((B > D && D % 2 == 1) || (D > B && B % 2 == 0)) y = A + C - 1;
  for (int i = 0; i < N; i++) {
    int cnt;
    scanf("%d", &cnt);
    for (int j = 0; j < cnt; j++) {
      matr[x][y] = 'a' + i;
      for (int d = 0; d < 3; d++) {
        int xx = x + dirs[d][0];
        int yy = y + dirs[d][1];
        if (xx >= 0 && xx < 100 && yy >= 0 && yy < 100 && matr[xx][yy] == '*') {
          x = xx;
          y = yy;
          break;
        }
      }
    }
  }
  int z = max(D, B);
  printf("YES\n");
  for (int i = 0; i < z; i++) {
    for (int j = 0; j < A + C; j++) printf("%c", matr[i][j]);
    printf("\n");
  }
  return 0;
}
