#include <bits/stdc++.h>
using namespace std;
int grid[1200][1200];
int main() {
  int n, m, a, b, c;
  cin >> n >> m >> a >> b >> c;
  if ((n * m) % 2 == 1) {
    cout << "IMPOSSIBLE";
    return 0;
  }
  int x = n, y = m, a1 = 0, a2 = 0, a3 = 0;
  if (n % 2 == 1) {
    x = n - 1;
    y = m;
    a1 = m / 2;
    if (a1 > a) {
      cout << "IMPOSSIBLE";
      return 0;
    }
  }
  if (m % 2 == 1) {
    x = n;
    y = m - 1;
    a2 = n / 2;
    if (a2 > b) {
      cout << "IMPOSSIBLE";
      return 0;
    }
  }
  for (int i = 0; i < x; i += 2) {
    for (int j = 0; j < y; j += 2) {
      int col[5] = {0, 0, 0, 0, 0};
      if (a1 + 2 <= a) {
        a1 += 2;
        if (i > 0) {
          col[grid[i - 1][j]] = col[grid[i - 1][j + 1]] = 1;
        }
        if (j > 0) col[grid[i][j - 1]] = 1;
        for (int k = 0; k < 5; k++) {
          if (col[k] == 0) {
            grid[i][j] = grid[i][j + 1] = k;
            break;
          }
        }
        for (int k = 0; k < 5; k++) {
          if (k != grid[i][j] && (j == 0 || k != grid[i + 1][j - 1])) {
            grid[i + 1][j] = grid[i + 1][j + 1] = k;
            break;
          }
        }
      } else if (a2 + 2 <= b) {
        a2 += 2;
        if (j > 0) {
          col[grid[i][j - 1]] = col[grid[i + 1][j - 1]] = 1;
        }
        if (i > 0) col[grid[i - 1][j]] = 1;
        for (int k = 0; k < 5; k++) {
          if (col[k] == 0) {
            grid[i][j] = grid[i + 1][j] = k;
            break;
          }
        }
        for (int k = 0; k < 5; k++) {
          if (k != grid[i][j] && (i == 0 || k != grid[i - 1][j + 1])) {
            grid[i][j + 1] = grid[i + 1][j + 1] = k;
            break;
          }
        }
      } else if (a3 + 1 <= c) {
        a3 += 1;
        if (i > 0) {
          col[grid[i - 1][j]] = col[grid[i - 1][j + 1]] = 1;
        }
        if (j > 0) col[grid[i][j - 1]] = col[grid[i + 1][j - 1]] = 1;
        for (int k = 0; k < 5; k++) {
          if (col[k] == 0) {
            grid[i][j] = grid[i][j + 1] = grid[i + 1][j] = grid[i + 1][j + 1] =
                k;
            break;
          }
        }
      } else {
        cout << "IMPOSSIBLE";
        return 0;
      }
    }
  }
  if (n % 2 == 1) {
    for (int j = 0; j < m; j += 2) {
      int col[5] = {0, 0, 0, 0, 0};
      if (n > 1) col[grid[n - 2][j]] = col[grid[n - 2][j + 1]] = 1;
      if (j > 0) col[grid[n - 1][j - 1]] = 1;
      for (int k = 0; k < 5; k++) {
        if (col[k] == 0) {
          grid[n - 1][j] = grid[n - 1][j + 1] = k;
          break;
        }
      }
    }
  }
  if (m % 2 == 1) {
    for (int i = 0; i < n; i += 2) {
      int col[5] = {0, 0, 0, 0, 0};
      if (m > 1) col[grid[i][m - 2]] = col[grid[i + 1][m - 2]] = 1;
      if (i > 0) col[grid[i - 1][m - 1]] = 1;
      for (int k = 0; k < 5; k++) {
        if (col[k] == 0) {
          grid[i][m - 1] = grid[i + 1][m - 1] = k;
          break;
        }
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m - 1; j++) printf("%c", grid[i][j] + 'a');
    printf("%c\n", grid[i][m - 1] + 'a');
  }
}
