#include <bits/stdc++.h>
using namespace std;
int n, m, a, b, c, k;
char buf[101][101];
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
bool used[26];
char mas[2][2][2] = {{{'a', 'b'}, {'c', 'd'}}, {{'e', 'f'}, {'g', 'h'}}};
int main() {
  scanf("%d%d%d%d%d", &n, &m, &a, &b, &c);
  int tn = n, tm = m;
  if (n % 2 == 1 && m % 2 == 1) {
    puts("IMPOSSIBLE");
    return 0;
  }
  if (n % 2 == 1) {
    k = m / 2;
    if (k > a) {
      puts("IMPOSSIBLE");
      return 0;
    }
    a -= k;
    for (int i = 0; i < k; ++i) {
      buf[n - 1][2 * i] = i % 2 == 0 ? 'z' : 'y';
      buf[n - 1][2 * i + 1] = i % 2 == 0 ? 'z' : 'y';
    }
    n--;
  }
  if (m % 2 == 1) {
    k = n / 2;
    if (k > b) {
      puts("IMPOSSIBLE");
      return 0;
    }
    b -= k;
    for (int i = 0; i < k; ++i) {
      buf[2 * i][m - 1] = i % 2 == 0 ? 'z' : 'y';
      buf[2 * i + 1][m - 1] = i % 2 == 0 ? 'z' : 'y';
    }
    m--;
  }
  k = c + a / 2 + b / 2;
  if (k < (n * m) / 4) {
    puts("IMPOSSIBLE");
    return 0;
  }
  for (int i = 0; i < n / 2; ++i)
    for (int j = 0; j < m / 2; ++j)
      if (c > 0) {
        c--;
        for (int x = 2 * i; x <= 2 * i + 1; ++x)
          for (int y = 2 * j; y <= 2 * j + 1; ++y)
            buf[x][y] = mas[i % 2][j % 2][0];
      } else if (a > 1) {
        a -= 2;
        for (int x = 2 * i; x <= 2 * i + 1; ++x)
          for (int y = 2 * j; y <= 2 * j + 1; ++y)
            buf[x][y] = mas[i % 2][j % 2][x % 2];
      } else if (b > 1) {
        b -= 2;
        for (int x = 2 * i; x <= 2 * i + 1; ++x)
          for (int y = 2 * j; y <= 2 * j + 1; ++y)
            buf[x][y] = mas[i % 2][j % 2][y % 2];
      }
  for (int i = 0; i < tn; ++i) buf[i][tm] = '\0';
  for (int i = 0; i < tn; ++i) puts(buf[i]);
  return 0;
}
