#include <bits/stdc++.h>
using namespace std;
const int N = 111;
char s[N][N];
int main() {
  int n, m, a, b, c;
  scanf("%d%d%d%d%d", &n, &m, &a, &b, &c);
  int nn = n;
  if ((n % 2) && (m % 2)) {
    puts("IMPOSSIBLE");
    return 0;
  }
  if (n % 2 == 1 && m > a * 2) {
    puts("IMPOSSIBLE");
    return 0;
  }
  if (m % 2 == 1 && n > b * 2) {
    puts("IMPOSSIBLE");
    return 0;
  }
  char x = 'y';
  if (n % 2) {
    for (int i = 0; i + 1 < m; i += 2) {
      s[n - 1][i] = s[n - 1][i + 1] = x;
      x ^= 1;
    }
    --n;
    a -= m / 2;
  }
  if (m % 2) {
    for (int i = 0; i + 1 < n; i += 2) {
      s[i][m - 1] = s[i + 1][m - 1] = x;
      x ^= 1;
    }
    --m;
    b -= n / 2;
  }
  x = 96 + 7;
  char y = x + 8, z = x + 16;
  for (int i = 0; i + 1 < n; i += 2) {
    for (int j = 0; j + 1 < m; j += 2) {
      if (c > 0) {
        s[i][j] = s[i + 1][j] = s[i][j + 1] = s[i + 1][j + 1] = x;
        --c;
      } else if (a > 1) {
        s[i][j] = s[i][j + 1] = y;
        s[i + 1][j] = s[i + 1][j + 1] = y ^ 1;
        a -= 2;
      } else if (b > 1) {
        s[i][j] = s[i + 1][j] = z;
        s[i][j + 1] = s[i + 1][j + 1] = z ^ 1;
        b -= 2;
      } else {
        puts("IMPOSSIBLE");
        return 0;
      }
      x ^= 2;
      y ^= 2;
      z ^= 2;
    }
    x ^= 4;
    y ^= 4;
    z ^= 4;
  }
  for (int i = 0; i < nn; ++i) puts(s[i]);
}
