#include <bits/stdc++.h>
using namespace std;
int tavan(int x, int y) {
  int res = 1;
  while (y) {
    res *= y % 2 ? x : 1;
    res %= ((int)1e9 + 7);
    x *= x;
    x %= ((int)1e9 + 7);
    y /= 2;
  }
  return res;
}
int a, b, c, d, n;
char ans[((int)100)][((int)100)];
vector<char> ex;
void solve(int x, int y, bool up) {
  if (y == a + c) return;
  ans[x][y] = ex.back();
  ex.pop_back();
  if (up) {
    if (x - 1 >= 0)
      solve(x - 1, y, 1);
    else
      solve(0, y + 1, 0);
    return;
  }
  if (y < a) {
    if (x != b - 1)
      solve(x + 1, y, 0);
    else
      solve(b - 1, y + 1, 1);
    return;
  }
  if (x != d - 1)
    solve(x + 1, y, 0);
  else
    solve(d - 1, y + 1, 1);
}
int main() {
  cin >> a >> b >> c >> d >> n;
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    for (int j = 0; j < x; j++) ex.push_back((char)(i + 'a'));
  }
  for (int i = 0; i < ((int)100); i++)
    for (int j = 0; j < ((int)100); j++) ans[i][j] = '.';
  if (a % 2)
    solve(b - 1, 0, 1);
  else
    solve(0, 0, 0);
  cout << "YES\n";
  for (int i = 0; i < max(b, d); i++, puts(""))
    for (int j = 0; j < a + c; j++) cout << ans[i][j];
  return 0;
}
