#include <bits/stdc++.h>
using namespace std;
long long grid[500][500];
int32_t main() {
  memset(grid, -1, sizeof(grid));
  long long a, b, c, d, n;
  cin >> a >> b >> c >> d >> n;
  long long *arr = new long long[n];
  for (long long i = 0; i < n; i++) cin >> arr[i];
  long long itr = 0;
  if (c % 2 == 0) {
    for (long long i = a + c; i >= 1; i--) {
      if (i > a) {
        long long diff = (a + c - i);
        if (diff % 2 == 0) {
          for (long long j = 1; j <= d; j++) {
            if (arr[itr] == 0) itr++;
            grid[j][i] = itr;
            arr[itr]--;
          }
        } else {
          for (long long j = d; j >= 1; j--) {
            if (arr[itr] == 0) itr++;
            grid[j][i] = itr;
            arr[itr]--;
          }
        }
      } else {
        long long diff = (a + c - i);
        if (diff % 2 == 0) {
          for (long long j = 1; j <= b; j++) {
            if (arr[itr] == 0) itr++;
            grid[j][i] = itr;
            arr[itr]--;
          }
        } else {
          for (long long j = b; j >= 1; j--) {
            if (arr[itr] == 0) itr++;
            grid[j][i] = itr;
            arr[itr]--;
          }
        }
      }
    }
  } else {
    for (long long i = a + c; i >= 1; i--) {
      if (i > a) {
        long long diff = (a + c - i);
        if (diff % 2 != 0) {
          for (long long j = 1; j <= d; j++) {
            if (arr[itr] == 0) itr++;
            grid[j][i] = itr;
            arr[itr]--;
          }
        } else {
          for (long long j = d; j >= 1; j--) {
            if (arr[itr] == 0) itr++;
            grid[j][i] = itr;
            arr[itr]--;
          }
        }
      } else {
        long long diff = (a + c - i);
        if (diff % 2 != 0) {
          for (long long j = 1; j <= b; j++) {
            if (arr[itr] == 0) itr++;
            grid[j][i] = itr;
            arr[itr]--;
          }
        } else {
          for (long long j = b; j >= 1; j--) {
            if (arr[itr] == 0) itr++;
            grid[j][i] = itr;
            arr[itr]--;
          }
        }
      }
    }
  }
  cout << "YES" << endl;
  for (long long i = 1; i <= max(b, d); i++) {
    for (long long j = 1; j <= a + c; j++) {
      if (grid[i][j] == -1)
        cout << ".";
      else
        cout << (char)('a' + grid[i][j]) << "";
    }
    cout << endl;
  }
}
