#include <bits/stdc++.h>
using namespace std;
int32_t main() {
  long long a, b, c, d, n;
  cin >> a >> b >> c >> d >> n;
  map<char, long long> mp;
  char curr_char = 'a';
  for (long long i = 0, x; i < n; i++) {
    cin >> x;
    mp[curr_char++] = x;
  }
  vector<vector<char>> ans((long long)max(b, d), vector<char>(a + c, '.'));
  bool reversed = false;
  if (d > b) {
    swap(d, b);
    swap(a, c);
    reversed = true;
  }
  cout << "YES\n";
  bool right_to_left = (min(b, d) % 2 != 0);
  curr_char = 'a';
  for (long long i = 0; i < min(b, d); i++) {
    for (long long j = 0; j < a + c; j++) {
      if (mp[curr_char] == 0) curr_char++;
      if (right_to_left)
        ans[i][a + c - 1ll - j] = curr_char;
      else
        ans[i][j] = curr_char;
      mp[curr_char]--;
    }
    right_to_left ^= 1;
  }
  for (long long i = min(b, d); i < b; i++) {
    for (long long j = 0; j < a; j++) {
      if (mp[curr_char] == 0) curr_char++;
      if (right_to_left)
        ans[i][a - 1ll - j] = curr_char;
      else
        ans[i][j] = curr_char;
      mp[curr_char]--;
    }
    right_to_left ^= 1;
  }
  if (reversed) {
    for (auto &i : ans) reverse(i.begin(), i.end());
  }
  for (auto i : ans) {
    for (auto j : i) cout << j;
    cout << "\n";
  }
  return 0;
}
