#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const int MOD = 1e9 + 7;
const int N = 1e2 + 10;
int a[N], n, xa, xb, ya, yb, ans[N][N];
bool inside(int x, int y) {
  if (y <= ya) return (x > 0 && x <= xa);
  return (x > 0 && x <= xb);
}
void build(int t1, int cur, int x, int y) {
  if (cur > n) return;
  if (!a[cur]) {
    build(t1, cur + 1, x, y);
    return;
  }
  if (!inside(x, y)) {
    build(-t1, cur, (x == 0) ? 1 : (y <= ya ? xa : xb), y + 1);
    return;
  }
  ans[x][y] = cur;
  a[cur]--;
  build(t1, cur, x + t1, y);
}
int main() {
  cin >> ya >> xa >> yb >> xb >> n;
  for (auto i = 1; i <= n; i++) cin >> a[i];
  if (ya % 2)
    build(-1, 1, xa, 1);
  else
    build(1, 1, 1, 1);
  printf("YES\n");
  for (auto i = 1; i <= max(xa, xb); i++) {
    for (auto j = 1; j <= ya + yb; j++)
      printf("%c", ans[i][j] ? (ans[i][j] - 1 + 'a') : '.');
    printf("\n");
  }
}
