#include <bits/stdc++.h>
using namespace std;
char mask[105][105];
int main() {
  int i, j, n, m, a, b, c, need;
  scanf("%d%d%d%d%d", &n, &m, &a, &b, &c);
  if (n % 2 && m % 2 || (n * m > (a + b) * 2 + c * 4))
    puts("IMPOSSIBLE");
  else {
    if (n % 2) {
      if (a >= m / 2) {
        a -= m / 2;
        need = (n - 1) * m;
        if (a / 2 * 4 + b / 2 * 4 + c * 4 >= need) {
          for (i = 2; i < n; i += 2)
            for (j = 2; j <= m; j += 2) {
              char t = (i % 4) * 4 + (j % 4) + 'a';
              if (c) {
                c--;
                mask[i - 1][j - 1] = mask[i - 1][j] = mask[i][j - 1] =
                    mask[i][j] = t;
              } else if (a >= 2) {
                a -= 2;
                mask[i - 1][j - 1] = mask[i - 1][j] = t;
                mask[i][j - 1] = mask[i][j] = t + 1;
              } else {
                b -= 2;
                mask[i - 1][j - 1] = mask[i][j - 1] = t;
                mask[i - 1][j] = mask[i][j] = t + 1;
              }
            }
          for (i = 1; i < n; i++) {
            for (j = 1; j <= m; j++) printf("%c", mask[i][j]);
            puts("");
          }
          for (i = 2; i <= m; i += 2) {
            char t = 'x' + i % 4;
            printf("%c%c", t, t);
          }
          puts("");
        } else
          puts("IMPOSSIBLE");
      } else
        puts("IMPOSSIBLE");
    } else if (m % 2) {
      if (b >= n / 2) {
        b -= n / 2;
        need = n * (m - 1);
        if (a / 2 * 4 + b / 2 * 4 + c * 4 >= need) {
          for (i = 2; i <= n; i += 2)
            for (j = 2; j < m; j += 2) {
              char t = (i % 4) * 4 + (j % 4) + 'a';
              if (c) {
                c--;
                mask[i - 1][j - 1] = mask[i - 1][j] = mask[i][j - 1] =
                    mask[i][j] = t;
              } else if (a >= 2) {
                a -= 2;
                mask[i - 1][j - 1] = mask[i - 1][j] = t;
                mask[i][j - 1] = mask[i][j] = t + 1;
              } else {
                b -= 2;
                mask[i - 1][j - 1] = mask[i][j - 1] = t;
                mask[i - 1][j] = mask[i][j] = t + 1;
              }
            }
          for (i = 2; i <= n; i += 2) {
            char t = i % 4 + 'x';
            mask[i][m] = mask[i - 1][m] = t;
          }
          for (i = 1; i <= n; i++) {
            for (j = 1; j <= m; j++) {
              printf("%c", mask[i][j]);
            }
            puts("");
          }
        }
      } else
        puts("IMPOSSIBLE");
    } else {
      need = n * m;
      if (a / 2 * 4 + b / 2 * 4 + c * 4 >= need) {
        for (i = 2; i <= n; i += 2)
          for (j = 2; j <= m; j += 2) {
            char t = (i % 4) * 4 + (j % 4) + 'a';
            if (c) {
              c--;
              mask[i - 1][j - 1] = mask[i - 1][j] = mask[i][j - 1] =
                  mask[i][j] = t;
            } else if (a >= 2) {
              a -= 2;
              mask[i - 1][j - 1] = mask[i - 1][j] = t;
              mask[i][j - 1] = mask[i][j] = t + 1;
            } else {
              b -= 2;
              mask[i - 1][j - 1] = mask[i][j - 1] = t;
              mask[i - 1][j] = mask[i][j] = t + 1;
            }
          }
        for (i = 1; i <= n; i++) {
          for (j = 1; j <= m; j++) printf("%c", mask[i][j]);
          puts("");
        }
      } else
        puts("IMPOSSIBLE");
    }
  }
  return 0;
}
