func_code_string: #include <bits/stdc++.h>   using namespace std;   int board[9][9];   int bBoard[9][9];   int best, N, M;   void saveBoard() {     for (int i = 0; i < N; i++)       for (int j = 0; j < M; j++) bBoard[i][j] = board[j][i];   }   void printBoard() {     for (int i = 0; i < N; i++, cout << endl)       for (int j = 0; j < M; j++)         cout << (char)(bBoard[i][j] +  A  ==  A  ?  .  : bBoard[i][j] +  A  - 1);   }   int dx[][5] = {       {0, -1, -2, -1, -1},       {-2, 0, -1, -2, -2},       {-1, -1, 0, -1, -2},       {0, 0, -1, -2, 0},   };   int dy[][5] = {       {0, 0, 0, -1, -2},       {0, -1, -1, -1, -2},       {0, -1, -2, -2, -2},       {0, -1, -1, -1, -2},   };   bool place(int x, int y, int cur, int t) {     for (int i = 0; i < 5; i++) {       int nx = x + dx[t][i], ny = y + dy[t][i];       if (nx < 0 || ny < 0 || board[nx][ny]) return false;     }     for (int i = 0; i < 5; i++) {       int nx = x + dx[t][i], ny = y + dy[t][i];       board[nx][ny] = cur;     }     return true;   }   void unplace(int x, int y, int cur, int t) {     for (int i = 0; i < 5; i++) {       int nx = x + dx[t][i], ny = y + dy[t][i];       board[nx][ny] = 0;     }   }   void search(int x, int y, int cur) {     if (M * (N - y) + M - x <= 5 * (best - cur)) return;     if (x == M) {       y++;       x = 0;     }     if (y == N) {       if (cur > best) {         best = cur;         saveBoard();       }       return;     }     for (int i = 0; i < 4; i++) {       if (place(x, y, cur, i)) {         search(x + 1, y, cur + 1);         unplace(x, y, cur, i);       }     }     search(x + 1, y, cur);   }   int main() {     cin >> N >> M;     search(0, 0, 1);     cout << (best - 1) << endl;     printBoard();     return 0;   }   