#include <bits/stdc++.h>
using namespace std;
const int MAXN = 26;
int n, a, b, c, d;
int x[MAXN];
vector<pair<int, int> > v;
char m[120][120];
int main() {
  cin >> a >> b >> c >> d >> n;
  for (int i = 0; i < n; i++) cin >> x[i];
  if (d < b) {
    for (int i = c + a; i >= 1; i--) {
      if (i > a) {
        if ((i - a) & 1)
          for (int j = d; j >= 1; j--) v.push_back(make_pair(i, j));
        else
          for (int j = 1; j <= d; j++) v.push_back(make_pair(i, j));
      } else {
        if ((a - i) & 1)
          for (int j = b; j >= 1; j--) v.push_back(make_pair(i, j));
        else
          for (int j = 1; j <= b; j++) v.push_back(make_pair(i, j));
      }
    }
  } else {
    for (int i = 1; i <= a + c; i++) {
      if (i <= a) {
        if ((a - i) & 1)
          for (int j = 1; j <= b; j++) v.push_back(make_pair(i, j));
        else
          for (int j = b; j >= 1; j--) v.push_back(make_pair(i, j));
      } else {
        if ((i - a) & 1)
          for (int j = 1; j <= d; j++) v.push_back(make_pair(i, j));
        else
          for (int j = d; j >= 1; j--) v.push_back(make_pair(i, j));
      }
    }
  }
  for (int i = 1; i < 120; i++)
    for (int j = 1; j < 120; j++) m[i][j] = '.';
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    for (int j = cnt; j < cnt + x[i]; j++) m[v[j].second][v[j].first] = i + 'a';
    cnt += x[i];
  }
  printf("YES\n");
  for (int i = 1; i <= max(b, d); i++) {
    for (int j = 1; j <= a + c; j++) printf("%c", m[i][j]);
    printf("\n");
  }
  return 0;
}
