func_code_string: #include <bits/stdc++.h>   int a[5][100005];   int b[100005][5];   int main() {     int n, m;     std::cin >> n >> m;     if (n == 1 && m == 1)       std::cout <<  YES n1 n ;     else if (n == 3 && m == 3) {       std::cout <<  YES n ;       std::cout <<  5 1 9 n7 6 4 n2 8 3 n ;     } else if (std::max(n, m) <= 3) {       std::cout <<  NO n ;     } else if (m == 4 || n == 4) {       std::cout <<  YES n ;       if (m == 4) {         for (int i = 0; i < n; i++) {           if (i % 2 == 1) {             std::cout << i * 4 + 2 <<     << i * 4 + 4 <<     << i * 4 + 1 <<                           << i * 4 + 3 <<   n ;           } else {             std::cout << i * 4 + 3 <<     << i * 4 + 1 <<     << i * 4 + 4 <<                           << i * 4 + 2 <<   n ;           }         }       } else if (n == 4) {         for (int j = 1; j <= m; j++) {           if (j % 2 == 1) {             a[3][j] = j + 2 * m;             a[2][j] = j;             a[1][j] = j + 3 * m;             a[0][j] = j + m;           } else {             a[0][j] = j + 2 * m;             a[1][j] = j;             a[2][j] = j + 3 * m;             a[3][j] = j + m;           }         }         for (int i = 0; i < n; i++) {           for (int j = 1; j <= m; j++) {             std::cout << a[i][j] <<    ;           }           std::cout <<   n ;         }       }     } else {       std::cout <<  YES n ;       if (m > 4) {         for (int i = 0; i < n; i++) {           int offset = i * m;           if (i % 2 == 0) {             for (int j = 1; j < std::ceil(m / 2.0); j++) {               std::cout << offset + j <<     << offset + j + std::ceil(m / 2.0)                         <<    ;             }             if (m % 2 == 0)               std::cout << offset + std::ceil(m / 2.0) <<     << offset + m                         <<   n ;             else               std::cout << offset + std::ceil(m / 2.0) <<   n ;           } else {             for (int j = 1; j < std::ceil(m / 2.0); j++) {               std::cout << offset + j + (m / 2) <<     << offset + j <<    ;             }             if (m % 2 == 0)               std::cout << offset + m <<     << offset + std::ceil(m / 2.0)                         <<   n ;             else               std::cout << offset + m <<   n ;           }         }       } else {         for (int j = 0; j < m; j++) {           int offset = j;           if (j % 2 == 0) {             for (int i = 0; i < std::ceil(n / 2.0); i++) {               b[2 * i][j] = offset + 1 + i * m;               b[2 * i + 1][j] = offset + 1 + i * m + std::ceil(n / 2.0) * m;             }           } else {             for (int i = 0; i < std::ceil(n / 2.0); i++) {               b[2 * i][j] = offset + 1 + i * m + (n / 2) * m;               b[2 * i + 1][j] = offset + 1 + i * m;             }           }         }         for (int i = 0; i < n; i++) {           for (int j = 0; j < m; j++) {             std::cout << b[i][j] <<    ;           }           std::cout <<   n ;         }       }     }   }   