#include <bits/stdc++.h>
using namespace std;
int n, m, a, b, c;
int dx[] = {-1, -1, 0, 1};
int dy[] = {0, 1, -1, -1};
char arr[105][105];
string getChar(int x, int y) {
  string ret;
  map<char, bool> laa;
  for (int i = 0; i < 4; i++) {
    if (x + dx[i] >= 0 && y + dy[i] >= 0) {
      laa[arr[x + dx[i]][y + dy[i]]] = true;
    }
  }
  for (char let = 'a'; let <= 'z' && ret.size() < 2; let++) {
    if (!laa[let]) ret += let;
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> a >> b >> c;
  if (n & 1 && m & 1) return cout << "IMPOSSIBLE", 0;
  if (n & 1) {
    if (a * 2 < m) return cout << "IMPOSSIBLE", 0;
    for (int i = 0; i < m; i += 2) {
      string col = getChar(0, i);
      arr[0][i] = arr[0][i + 1] = col[0];
      a--;
    }
  }
  if (m & 1) {
    if (b * 2 < n) return cout << "IMPOSSIBLE", 0;
    for (int i = 0; i < n; i += 2) {
      string col = getChar(i, 0);
      arr[i][0] = arr[i + 1][0] = col[0];
      b--;
    }
  }
  for (int i = (n & 1); i < n; i += 2) {
    for (int j = (m & 1); j < m; j += 2) {
      string col = getChar(i, j);
      if (c) {
        arr[i][j] = arr[i][j + 1] = arr[i + 1][j] = arr[i + 1][j + 1] = col[0];
        c--;
      } else if (a >= 2) {
        arr[i][j] = arr[i][j + 1] = col[0];
        arr[i + 1][j] = arr[i + 1][j + 1] = col[1];
        a -= 2;
      } else if (b >= 2) {
        arr[i][j] = arr[i + 1][j] = col[0];
        arr[i][j + 1] = arr[i + 1][j + 1] = col[1];
        b -= 2;
      } else
        return cout << "IMPOSSIBLE", 0;
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cout << arr[i][j];
    }
    cout << endl;
  }
  return 0;
}
