#include <bits/stdc++.h>   using namespace std;   const double EPS = 1e-8;   const int maxn = 105;   int n, m, a, b, c;   char mat[maxn][maxn];   void draw(int x, int y, char c) {     mat[x][y] = mat[x + 1][y] = mat[x][y + 1] = mat[x + 1][y + 1] = c;   }   void gao() {     if (n * m % 2 == 1) {       puts( IMPOSSIBLE );       return;     }     int tot = a * 2 + b * 2 + c * 4;     if (tot < n * m) {       puts( IMPOSSIBLE );       return;     }     int i, j, k;     memset(mat, 0, sizeof mat);     for (i = 0; i < n / 2; ++i) {       int x0 = i * 2;       if (i % 2 == 0) {         for (j = 0; j < m / 2; ++j) {           int y0 = j * 2;           draw(x0, y0, j % 2 == 1 ?  a  :  b );           --c;         }       } else {         for (j = 0; j < m / 2; ++j) {           int y0 = j * 2;           draw(x0, y0, j % 2 == 1 ?  c  :  d );           --c;         }       }     }     if (n % 2 == 1 || m % 2 == 1) {       if (n % 2 == 1) {         for (i = 0; i < m / 2; ++i) {           mat[n - 1][i * 2] = mat[n - 1][i * 2 + 1] = (i % 2 ?  e  :  f );           --a;         }       } else {         for (i = 0; i < n / 2; ++i) {           mat[i * 2][m - 1] = mat[i * 2 + 1][m - 1] = (i % 2 ?  e  :  f );           --b;         }       }     }     bool flg = 1;     if (c < 0) {       for (i = 0; i < n / 2 && c < 0; ++i) {         int x0 = i * 2;         if (i % 2 == 0) {           for (j = 0; j < m / 2 && c < 0; ++j) {             int y0 = j * 2;             if (a > b) {               a -= 2;               if (j % 2 == 1) {                 mat[x0][y0] = mat[x0][y0 + 1] =  g ;                 mat[x0 + 1][y0] = mat[x0 + 1][y0 + 1] =  h ;               } else {                 mat[x0][y0] = mat[x0][y0 + 1] =  x ;                 mat[x0 + 1][y0] = mat[x0 + 1][y0 + 1] =  y ;               }               ++c;             } else {               b -= 2;               if (j % 2 == 1) {                 mat[x0][y0] = mat[x0 + 1][y0] =  g ;                 mat[x0][y0 + 1] = mat[x0 + 1][y0 + 1] =  h ;               } else {                 mat[x0][y0] = mat[x0 + 1][y0] =  x ;                 mat[x0][y0 + 1] = mat[x0 + 1][y0 + 1] =  y ;               }               ++c;             }           }         } else {           for (j = 0; j < m / 2 && c < 0; ++j) {             int y0 = j * 2;             if (a > b) {               a -= 2;               if (j % 2 == 1) {                 mat[x0][y0] = mat[x0][y0 + 1] =  i ;                 mat[x0 + 1][y0] = mat[x0 + 1][y0 + 1] =  j ;               } else {                 mat[x0][y0] = mat[x0][y0 + 1] =  k ;                 mat[x0 + 1][y0] = mat[x0 + 1][y0 + 1] =  l ;               }               ++c;             } else {               b -= 2;               if (j % 2 == 1) {                 mat[x0][y0] = mat[x0 + 1][y0] =  i ;                 mat[x0][y0 + 1] = mat[x0 + 1][y0 + 1] =  j ;               } else {                 mat[x0][y0] = mat[x0 + 1][y0] =  k ;                 mat[x0][y0 + 1] = mat[x0 + 1][y0 + 1] =  l ;               }               ++c;             }           }         }       }     }     if (a < 0 || b < 0 || c < 0)       puts( IMPOSSIBLE );     else       for (i = 0; i < n; ++i) puts(mat[i]);   }   int main() {     while (cin >> n >> m >> a >> b >> c) {       gao();     }     return 0;   }