#include <bits/stdc++.h>
using namespace std;
void err() { std::cout << std::endl; }
template <typename T, typename... Args>
void err(T a, Args... args) {
  std::cout << a << ' ';
  err(args...);
}
template <template <typename...> class T, typename t, typename... A>
void err(const T<t> &arg, const A &...args) {
  for (auto &v : arg) std::cout << v << ' ';
  err(args...);
}
const long long mod = 1000000007;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);
long long powmod(long long a, long long b) {
  long long res = 1;
  a %= mod;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
const int N = 1e5 + 10;
char ans[105][105];
int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(0);
  std::cout.tie(0);
  int a, b, c, d, n;
  cin >> a >> b >> c >> d >> n;
  int ml = 1, mr = a + c;
  int r = 1;
  int l, dr;
  if (b >= d) {
    if (d & 1) {
      l = a + c;
      dr = -1;
    } else {
      l = 1;
      dr = 1;
    }
  } else {
    if (!(b & 1)) {
      l = a + c;
      dr = -1;
    } else {
      l = 1;
      dr = 1;
    }
  }
  cout << "YES" << '\n';
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    while (x--) {
      ans[r][l] = i + 'a';
      l += dr;
      if (l == mr + 1) {
        dr *= -1;
        l = mr;
        r++;
      } else if (l == ml - 1) {
        dr *= -1;
        l = ml;
        r++;
      }
      if (r == min(b, d) + 1) {
        if (b >= d) {
          mr = a;
        } else {
          ml = a + 1;
        }
      }
    }
  }
  r = max(b, d), l = a + c;
  for (int i = 1; i < r + 1; i++) {
    for (int j = 1; j < l + 1; j++) {
      if (ans[i][j])
        cout << ans[i][j];
      else
        cout << '.';
    }
    cout << '\n';
  }
  return 0;
}
