#include <bits/stdc++.h>
using namespace std;
char arr[1000][1000];
int main() {
  int n, m, a, b, c, i, i1;
  cin >> n >> m >> a >> b >> c;
  swap(a, b);
  if (n % 2 == 1 && m % 2 == 1) {
    cout << "IMPOSSIBLE" << endl;
    return 0;
  }
  int q = 10, w = 10;
  char C = 'a';
  if (n % 2 != 0) {
    for (i = w; i < m + 10; i += 2) {
      arr[q][i] = C;
      arr[q][i + 1] = C;
      C = 'a' + (C + 1) % 5;
      --b;
    }
    ++q;
  }
  if (m % 2 != 0) {
    for (i = q; i < n + 10; i += 2) {
      arr[i][w] = C;
      arr[i + 1][w] = C;
      C = 'a' + (C + 1) % 5;
      --a;
    }
    ++w;
  }
  if (a < 0 || b < 0) {
    cout << "IMPOSSIBLE" << endl;
    return 0;
  }
  a = (a / 2) * 2;
  b = (b / 2) * 2;
  for (i = q; i < n + 10; i += 2) {
    for (i1 = w; i1 < m + 10; i1 += 2) {
      int x = i;
      int y = i1;
      string A = "";
      A += arr[x - 1][y];
      A += arr[x][y - 1];
      A += arr[x - 1][y + 1];
      A += arr[x + 1][y - 1];
      char j, j1;
      for (j = 'a'; j <= 'z'; ++j) {
        if (A[0] != j && A[1] != j && A[2] != j && A[3] != j) break;
      }
      j1 = j;
      for (j = 'a'; j <= 'z'; ++j) {
        if (j1 != j && A[0] != j && A[1] != j && A[2] != j && A[3] != j) break;
      }
      if (c != 0) {
        arr[x][y] = j;
        arr[x][y + 1] = j;
        arr[x + 1][y] = j;
        arr[x + 1][y + 1] = j;
        --c;
        continue;
      }
      if (a != 0) {
        arr[x][y] = j1;
        arr[x][y + 1] = j;
        arr[x + 1][y] = j1;
        arr[x + 1][y + 1] = j;
        a -= 2;
        continue;
      }
      if (b != 0) {
        arr[x][y] = j1;
        arr[x][y + 1] = j1;
        arr[x + 1][y] = j;
        arr[x + 1][y + 1] = j;
        b -= 2;
        continue;
      }
      cout << "IMPOSSIBLE" << endl;
      return 0;
    }
  }
  for (i = 10; i < n + 10; ++i) {
    for (i1 = 10; i1 < m + 10; ++i1) cout << arr[i][i1];
    cout << endl;
  }
  return 0;
}
