#include <bits/stdc++.h>
using namespace std;
int x, y, a, b, c;
vector<char> p[102];
void solve(int i, int j) {
  int k = j;
  if (a >= 0 && b >= 0 && (x / 2) * (y / 2) <= a / 2 + b / 2 + c) {
    a /= 2;
    b /= 2;
    char dir[4], now;
    int t = 0;
    for (; i < x; i += 2) {
      now = i % 4 * 2 + 'c';
      for (j = k; j < y; j += 2) {
        if (a > 0) {
          dir[0] = dir[1] = now + t;
          t = (t + 1) % 4;
          dir[2] = dir[3] = now + t;
          --a;
        } else if (b > 0) {
          dir[0] = dir[2] = now + t;
          t = (t + 1) % 4;
          dir[1] = dir[3] = now + t;
          --b;
        } else {
          dir[0] = dir[1] = dir[2] = dir[3] = now + t;
          --c;
        }
        p[i].push_back(dir[0]);
        p[i].push_back(dir[1]);
        p[i + 1].push_back(dir[2]);
        p[i + 1].push_back(dir[3]);
        t = (t + 1) % 4;
      }
    }
    for (i = 0; i < x; ++i) {
      for (j = 0; j < y; ++j) putchar(p[i][j]);
      puts("");
    }
  } else
    puts("IMPOSSIBLE");
}
int main() {
  cin >> x >> y >> a >> b >> c;
  if ((x & 1) && (y & 1))
    puts("IMPOSSIBLE");
  else if (x & 1) {
    for (int i = 0; i < y; ++i) p[0].push_back('a' + (i % 4 >= 2 ? 1 : 0));
    a -= (y / 2);
    solve(1, 0);
  } else if (y & 1) {
    for (int i = 0; i < x; ++i) p[i].push_back('a' + (i % 4 >= 2 ? 1 : 0));
    b -= (x / 2);
    solve(0, 1);
  } else {
    solve(0, 0);
  }
  return 0;
}
