func_code_string: #include <bits/stdc++.h>   const int N = 105;   char matrix[N][N];   void solve(int i, int j, int type) {     char c =  a ;     switch (type) {       case 0:         while (1) {           if (matrix[i - 1][j] == c || matrix[i - 1][j + 1] == c ||               matrix[i + 1][j] == c || matrix[i + 1][j + 1] == c ||               matrix[i][j - 1] == c || matrix[i][j + 2] == c) {             c = (char)(c + 1);           } else {             break;           }         }         matrix[i][j] = matrix[i][j + 1] = c;         break;       case 1:         while (1) {           if (matrix[i - 1][j] == c || matrix[i + 2][j] == c ||               matrix[i][j - 1] == c || matrix[i + 1][j - 1] == c ||               matrix[i][j + 1] == c || matrix[i + 1][j + 1] == c) {             c = (char)(c + 1);           } else {             break;           }         }         matrix[i][j] = matrix[i + 1][j] = c;         break;       case 2:         while (1) {           if (matrix[i - 1][j] == c || matrix[i - 1][j + 1] == c ||               matrix[i + 1][j] == c || matrix[i + 1][j + 1] == c ||               matrix[i][j - 1] == c || matrix[i + 1][j - 1] == c ||               matrix[i][j + 2] == c || matrix[i + 1][j + 2] == c) {             c = (char)(c + 1);           } else {             break;           }         }         matrix[i][j] = matrix[i + 1][j] = matrix[i][j + 1] =             matrix[i + 1][j + 1] = c;         break;     }   }   int main() {     int n, m, a, b, c, i, j;     bool ok = true;     scanf( %d%d%d%d%d , &n, &m, &a, &b, &c);     if (n & 1 && m & 1) {       ok = false;     } else if (n & 1) {       for (i = 1; i <= n - 1 && ok; i += 2) {         for (j = 1; j <= m && ok; j += 2) {           if (c) {             solve(i, j, 2);             c--;           } else if (b >= 2) {             solve(i, j, 1);             solve(i, j + 1, 1);             b -= 2;           } else if (a >= 2) {             solve(i, j, 0);             solve(i + 1, j, 0);             a -= 2;           } else {             ok = false;           }         }       }       for (j = 1; j <= m && ok; j += 2) {         if (a) {           solve(i, j, 0);           a--;         } else {           ok = false;         }       }     } else if (m & 1) {       for (i = 1; i <= n && ok; i += 2) {         for (j = 1; j <= m - 1 && ok; j += 2) {           if (c) {             solve(i, j, 2);             c--;           } else if (a >= 2) {             solve(i, j, 0);             solve(i + 1, j, 0);             a -= 2;           } else if (b >= 2) {             solve(i, j, 1);             solve(i, j + 1, 1);             b -= 2;           } else {             ok = false;           }         }       }       for (i = 1; i <= n && ok; i += 2) {         if (b) {           solve(i, j, 1);           b--;         } else {           ok = false;         }       }     } else {       for (i = 1; i <= n && ok; i += 2) {         for (j = 1; j <= m && ok; j += 2) {           if (c) {             solve(i, j, 2);             c--;           } else if (a >= 2) {             solve(i, j, 0);             solve(i + 1, j, 0);             a -= 2;           } else if (b >= 2) {             solve(i, j, 1);             solve(i, j + 1, 1);             b -= 2;           } else {             ok = false;           }         }       }     }     if (ok) {       for (i = 1; i <= n; i++) {         for (j = 1; j <= m; j++) {           printf( %c , matrix[i][j]);         }         printf(  n );       }     } else {       printf( IMPOSSIBLE n );     }     return 0;   }   