#include <bits/stdc++.h>
using namespace std;
const int N = 110;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = (x << 1) + (x << 3) + (ch ^ 48);
    ch = getchar();
  }
  return x * f;
}
int a, b, c, d, n;
int ch = 1;
int e[N][N];
int x = 1, y = 1, di = 0;
void solve(int cnt) {
  for (int i = 1; i <= cnt; i++) {
    e[x][y] = ch;
    if (!di) {
      if (y + 1 > a + c || y + 1 > a && x > d)
        x++, di ^= 1;
      else
        y++;
    } else {
      if (y - 1 < 1)
        x++, di ^= 1;
      else
        y--;
    }
  }
  return;
}
bool F = 0;
int main() {
  a = read(), b = read(), c = read(), d = read();
  n = read();
  if (b < d) {
    swap(a, c);
    swap(b, d);
    F = 1;
  }
  if (d & 1) y = a + c, di ^= 1;
  for (int i = 1; i <= n; i++) {
    int a;
    a = read();
    solve(a);
    ch++;
  }
  printf("YES\n");
  if (F) {
    for (int i = 1; i <= b; i++) {
      for (int j = a + c; j >= 1; j--) {
        if (!e[i][j])
          printf(".");
        else
          printf("%c", char(e[i][j] + 96));
      }
      printf("\n");
    }
  } else {
    for (int i = 1; i <= b; i++) {
      for (int j = 1; j <= a + c; j++) {
        if (!e[i][j])
          printf(".");
        else
          printf("%c", char(e[i][j] + 96));
      }
      printf("\n");
    }
  }
  return 0;
}
