#include <bits/stdc++.h>
int n, m, i, j, k, l, a, b, c;
char s[200][200];
bool bo;
void fail() { bo = false; }
bool work(int x, int y, int o, int p, int a, int b, int c) {
  int i, j;
  if (x > o) {
    return true;
  }
  if ((a < 0) || (b < 0) || (c < 0)) return false;
  if (x == o) {
    j = 0;
    for (i = 1; i <= m; i += 2) {
      s[1][i] = s[1][i + 1] = 'a' + j;
      j = (j ^ 1);
    }
    return true;
  } else if (y == p) {
    j = 0;
    for (i = 1; i <= n; i += 2) {
      s[i][1] = s[i + 1][1] = 'a' + j;
      j = (j ^ 1);
    }
    return true;
  } else {
    bool bo[29];
    for (i = 0; i < 26; i++) {
      bo[i] = false;
    }
    if (s[x - 1][y] != 0) {
      bo[s[x - 1][y] - 'a'] = true;
    }
    if (s[x - 1][y + 1] != 0) {
      bo[s[x - 1][y + 1] - 'a'] = true;
    }
    if (s[x][y - 1] != 0) {
      bo[s[x][y - 1] - 'a'] = true;
    }
    if (s[x + 1][y - 1] != 0) {
      bo[s[x + 1][y - 1] - 'a'] = true;
    }
    if (c >= 1) {
      char ch;
      for (i = 0; i < 26; i++)
        if (!bo[i]) {
          break;
        }
      ch = 'a' + i;
      s[x][y] = s[x][y + 1] = s[x + 1][y] = s[x + 1][y + 1] = ch;
      c--;
    } else if (a >= 2) {
      char ch[2];
      int k;
      k = 0;
      for (i = 0; i < 26; i++)
        if (!bo[i]) {
          ch[k] = 'a' + i;
          k++;
          if (k == 2) {
            break;
          }
        }
      s[x][y] = s[x][y + 1] = ch[0];
      s[x + 1][y] = s[x + 1][y + 1] = ch[1];
      a -= 2;
    } else if (b >= 2) {
      char ch[2];
      int k;
      k = 0;
      for (i = 0; i < 26; i++)
        if (!bo[i]) {
          ch[k] = 'a' + i;
          k++;
          if (k == 2) {
            break;
          }
        }
      s[x][y] = s[x + 1][y] = ch[0];
      s[x][y + 1] = s[x + 1][y + 1] = ch[1];
      b -= 2;
    } else {
      return false;
    }
    y += 2;
    if (y > m) {
      x += 2;
      y = 1;
      if ((m & 1) == 1) {
        y = 2;
      }
    }
  }
  return work(x, y, o, p, a, b, c);
}
void rect(int x, int y, int o, int p, int a, int b, int c) {
  if (!work(x, y, o, p, a, b, c)) {
    fail();
  }
}
int main() {
  bo = true;
  scanf("%d%d%d%d%d", &n, &m, &a, &b, &c);
  for (i = 0; i <= n; i++)
    for (j = 0; j <= m; j++) {
      s[i][j] = 0;
    }
  if ((((n * m) & 1) == 1) || (a * 2 + b * 2 + c * 4 < n * m)) {
    fail();
  } else if ((n & 1) == 1) {
    rect(1, 1, 1, m, m / 2, 0, 0);
    if (n > 1) {
      rect(2, 1, n, m, a - m / 2, b, c);
    } else {
      if (a < m / 2) {
        fail();
      }
    }
  } else if ((m & 1) == 1) {
    rect(1, 1, n, 1, 0, n / 2, 0);
    if (m > 1) {
      rect(1, 2, n, m, a, b - n / 2, c);
    } else {
      if (b < n / 2) {
        fail();
      }
    }
  } else {
    rect(1, 1, n, m, a, b, c);
  }
  if (bo) {
    for (i = 1; i <= n; i++) {
      for (j = 1; j <= m; j++) {
        printf("%c", s[i][j]);
      }
      printf("\n");
    }
  } else {
    printf("IMPOSSIBLE\n");
  }
  return 0;
}
