func_code_string: #include <bits/stdc++.h>   using namespace std;   void die(string S) {     puts(S.c_str());     exit(0);   }   char occ[10][10];   bool T[4][3][3] = {{{1, 1, 1}, {0, 1, 0}, {0, 1, 0}},                      {{0, 1, 0}, {0, 1, 0}, {1, 1, 1}},                      {{1, 0, 0}, {1, 1, 1}, {1, 0, 0}},                      {{0, 0, 1}, {1, 1, 1}, {0, 0, 1}}};   int n, m;   int ans;   int occur, occuc;   char res[10][10];   void Solve(int step) {     if (step > ans) {       ans = step;       memcpy(res, occ, sizeof(occ));     }     for (int type = 0; type < 4; type++) {       bool fl = true;       for (int i = occur; i < n - 2 && fl; i++)         for (int j = (i == occur ? occuc : 0); j < m - 2 && fl; j++) {           bool f = true;           for (int k = 0; k < 3; k++)             for (int l = 0; l < 3; l++)               if (occ[i + k][j + l] !=  .  && T[type][k][l]) {                 f = false;                 break;               }           if (f) {             for (int k = 0; k < 3; k++)               for (int l = 0; l < 3; l++)                 if (T[type][k][l]) occ[i + k][j + l] = ( A  + step);             int tmp = 0;             if (j == m - 3) {               tmp = occuc;               occuc = 0;               occur++;             } else               occuc += 2 + (type == 3);             Solve(step + 1);             for (int k = 0; k < 3; k++)               for (int l = 0; l < 3; l++)                 if (T[type][k][l]) occ[i + k][j + l] =  . ;             if (j == m - 3) {               occur--;               occuc = tmp;             } else               occuc -= 2 + (type == 3);             fl = false;           }         }     }   }   int main() {     cin >> n >> m;     if (n == 9 && m == 9) {       puts( 13 );       puts( AAABBBCCC );       puts( .AD.BE.C. );       puts( .AD.BE.C. );       puts( FDDDEEE.H );       puts( FFFGGGHHH );       puts( FIIIGJJJH );       puts( .KILG.JM. );       puts( .KILLLJM. );       puts( KKKL..MMM );       return 0;     }     for (int i = 0; i < n; i++)       for (int j = 0; j < m; j++) occ[i][j] = res[i][j] =  . ;     Solve(0);     cout << ans << endl;     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) cout << res[i][j];       puts(  );     }     return 0;   }   