#include <bits/stdc++.h>
using namespace std;
char table[101][101];
int main() {
  int n, m, a, b, c;
  int N, M;
  scanf("%d%d%d%d%d", &n, &m, &a, &b, &c);
  N = n, M = m;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) table[i][j] = '.';
  if ((n * m) % 2 == 1) {
    printf("IMPOSSIBLE\n");
    return 0;
  }
  if (n * m > 2 * (a + b) + 4 * c) {
    printf("IMPOSSIBLE\n");
    return 0;
  }
  if (n % 2 == 1) {
    if (a >= m / 2) {
      a -= m / 2;
      for (int i = 0; i < m; ++i) {
        if (i % 4 < 2) {
          table[n - 1][i] = 'z';
        } else {
          table[n - 1][i] = 'y';
        }
      }
      n--;
    } else {
      printf("IMPOSSIBLE\n");
      return 0;
    }
  }
  if (m % 2 == 1) {
    if (b >= n / 2) {
      b -= n / 2;
      for (int i = 0; i < n; ++i) {
        if (i % 4 < 2) {
          table[i][m - 1] = 'z';
        } else {
          table[i][m - 1] = 'y';
        }
      }
      m--;
    } else {
      printf("IMPOSSIBLE\n");
      return 0;
    }
  }
  for (int i = 0; i < n; i += 2) {
    for (int j = 0; j < m; j += 2) {
      int i2 = i / 2;
      int j2 = j / 2;
      char base;
      if ((i2 + j2) % 2 == 0)
        base = 'a';
      else
        base = 'c';
      if (a > 1) {
        table[i][j] = base;
        table[i][j + 1] = base;
        table[i + 1][j] = base + 1;
        table[i + 1][j + 1] = base + 1;
        a -= 2;
      } else if (b > 1) {
        table[i][j] = base;
        table[i][j + 1] = base + 1;
        table[i + 1][j] = base;
        table[i + 1][j + 1] = base + 1;
        b -= 2;
      } else if (c > 0) {
        table[i][j] = base;
        table[i][j + 1] = base;
        table[i + 1][j] = base;
        table[i + 1][j + 1] = base;
        c--;
      } else {
        printf("IMPOSSIBLE\n");
        return 0;
      }
    }
  }
  for (int i = 0; i < N; ++i) {
    for (int j = 0; j < M; ++j) printf("%c", table[i][j]);
    printf("\n");
  }
}
