#include <bits/stdc++.h>
using namespace std;
int n, m, cnta, cntb, cntc;
int ans[1010][1010];
int main() {
  scanf("%d%d%d%d%d", &n, &m, &cnta, &cntb, &cntc);
  if ((n * m) & 1) {
    puts("IMPOSSIBLE");
    return 0;
  } else if (((n & 1) == 0) && ((m & 1) == 0)) {
    for (int i = 1; i <= n; i += 2)
      for (int j = 1; j <= m; j += 2) {
        if ((i + j) % 4 == 0)
          ans[i][j] = ans[i + 1][j] = ans[i][j + 1] = ans[i + 1][j + 1] = 2;
        else
          ans[i][j] = ans[i + 1][j] = ans[i][j + 1] = ans[i + 1][j + 1] = 1;
        --cntc;
      }
    int nowx = 1, nowy = 1;
    while (cnta >= 2 && cntc < 0) {
      if ((nowx + nowy) % 4 != 0) {
        if ((nowx >> 1) & 1) {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 3;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 1;
          cnta -= 2;
          cntc++;
        } else {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 1;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 3;
          cnta -= 2;
          cntc++;
        }
      } else {
        if ((nowx >> 1) & 1) {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 2;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 3;
          cnta -= 2;
          cntc++;
        } else {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 3;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 2;
          cnta -= 2;
          cntc++;
        }
      }
      if (nowy + 2 > m)
        nowx += 2, nowy = 1;
      else
        nowy += 2;
    }
    nowx = n - 1;
    nowy = m - 1;
    while (cntb >= 2 && cntc < 0) {
      if (((nowx - 1) >> 1) & 1) {
        ans[nowx][nowy] = ans[nowx + 1][nowy] = 4;
        ans[nowx][nowy + 1] = ans[nowx + 1][nowy + 1] = 5;
        cntb -= 2;
        cntc++;
      } else {
        ans[nowx][nowy] = ans[nowx + 1][nowy] = 5;
        ans[nowx][nowy + 1] = ans[nowx + 1][nowy + 1] = 4;
        cntb -= 2;
        cntc++;
      }
      if (nowy - 2 <= 0)
        nowx -= 2, nowy = m - 1;
      else
        nowy -= 2;
    }
    if (cntc < 0)
      puts("IMPOSSIBLE");
    else
      for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= m; ++j) putchar('a' + ans[i][j] - 1);
        putchar('\n');
      }
  } else if (((n & 1) == 1) && ((m & 1) == 0)) {
    for (int i = 1; i <= m; i += 2)
      if ((i >> 1) & 1)
        ans[n][i] = ans[n][i + 1] = 6, cnta--;
      else
        ans[n][i] = ans[n][i + 1] = 7, cnta--;
    if (cnta < 0) {
      puts("IMPOSSIBLE");
      return 0;
    }
    n--;
    for (int i = 1; i <= n; i += 2)
      for (int j = 1; j <= m; j += 2) {
        if ((i + j) % 4 == 0)
          ans[i][j] = ans[i + 1][j] = ans[i][j + 1] = ans[i + 1][j + 1] = 2;
        else
          ans[i][j] = ans[i + 1][j] = ans[i][j + 1] = ans[i + 1][j + 1] = 1;
        --cntc;
      }
    int nowx = 1, nowy = 1;
    while (cnta >= 2 && cntc < 0) {
      if ((nowx + nowy) % 4 != 0) {
        if ((nowx >> 1) & 1) {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 3;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 1;
          cnta -= 2;
          cntc++;
        } else {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 1;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 3;
          cnta -= 2;
          cntc++;
        }
      } else {
        if ((nowx >> 1) & 1) {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 2;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 3;
          cnta -= 2;
          cntc++;
        } else {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 3;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 2;
          cnta -= 2;
          cntc++;
        }
      }
      if (nowy + 2 > m)
        nowx += 2, nowy = 1;
      else
        nowy += 2;
    }
    nowx = n - 1;
    nowy = m - 1;
    while (cntb >= 2 && cntc < 0) {
      if (((nowx - 1) >> 1) & 1) {
        ans[nowx][nowy] = ans[nowx + 1][nowy] = 4;
        ans[nowx][nowy + 1] = ans[nowx + 1][nowy + 1] = 5;
        cntb -= 2;
        cntc++;
      } else {
        ans[nowx][nowy] = ans[nowx + 1][nowy] = 5;
        ans[nowx][nowy + 1] = ans[nowx + 1][nowy + 1] = 4;
        cntb -= 2;
        cntc++;
      }
      if (nowy - 2 <= 0)
        nowx -= 2, nowy = m - 1;
      else
        nowy -= 2;
    }
    if (cntc < 0)
      puts("IMPOSSIBLE");
    else
      for (int i = 1; i <= n + 1; ++i) {
        for (int j = 1; j <= m; ++j) putchar('a' + ans[i][j] - 1);
        putchar('\n');
      }
  } else if (((n & 1) == 0) && ((m & 1) == 1)) {
    for (int i = 1; i <= n; i += 2)
      if ((i >> 1) & 1)
        ans[i][m] = ans[i + 1][m] = 6, cntb--;
      else
        ans[i][m] = ans[i + 1][m] = 7, cntb--;
    if (cntb < 0) {
      puts("IMPOSSIBLE");
      return 0;
    }
    m--;
    for (int i = 1; i <= n; i += 2)
      for (int j = 1; j <= m; j += 2) {
        if ((i + j) % 4 == 0)
          ans[i][j] = ans[i + 1][j] = ans[i][j + 1] = ans[i + 1][j + 1] = 2;
        else
          ans[i][j] = ans[i + 1][j] = ans[i][j + 1] = ans[i + 1][j + 1] = 1;
        --cntc;
      }
    int nowx = 1, nowy = 1;
    while (cnta >= 2 && cntc < 0) {
      if ((nowx + nowy) % 4 != 0) {
        if ((nowx >> 1) & 1) {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 3;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 1;
          cnta -= 2;
          cntc++;
        } else {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 1;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 3;
          cnta -= 2;
          cntc++;
        }
      } else {
        if ((nowx >> 1) & 1) {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 2;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 3;
          cnta -= 2;
          cntc++;
        } else {
          ans[nowx][nowy] = ans[nowx][nowy + 1] = 3;
          ans[nowx + 1][nowy] = ans[nowx + 1][nowy + 1] = 2;
          cnta -= 2;
          cntc++;
        }
      }
      if (nowy + 2 > m)
        nowx += 2, nowy = 1;
      else
        nowy += 2;
    }
    nowx = n - 1;
    nowy = m - 1;
    while (cntb >= 2 && cntc < 0) {
      if (((nowx - 1) >> 1) & 1) {
        ans[nowx][nowy] = ans[nowx + 1][nowy] = 4;
        ans[nowx][nowy + 1] = ans[nowx + 1][nowy + 1] = 5;
        cntb -= 2;
        cntc++;
      } else {
        ans[nowx][nowy] = ans[nowx + 1][nowy] = 5;
        ans[nowx][nowy + 1] = ans[nowx + 1][nowy + 1] = 4;
        cntb -= 2;
        cntc++;
      }
      if (nowy - 2 <= 0)
        nowx -= 2, nowy = m - 1;
      else
        nowy -= 2;
    }
    if (cntc < 0)
      puts("IMPOSSIBLE");
    else
      for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= m + 1; ++j) putchar('a' + ans[i][j] - 1);
        putchar('\n');
      }
  }
  return 0;
}
