func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, m;   vector<vector<long long> > a, b, orig;   bool swapd = false;   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     cin >> n >> m;     orig.resize(n);     for (long long i = 0; i < n; i++) {       orig[i].resize(m);       for (long long j = 0; j < m; j++) {         orig[i][j] = i * m + j + 1;       }     }     if (n > m) {       swap(n, m);       swapd = true;     }     if (n == 1 && m == 1) {       cout <<  YES n ;       cout <<  1 n ;       return 0;     }     if (n == 1 && m == 2) {       cout <<  NO n ;       return 0;     }     if (n == 1 && m == 3) {       cout <<  NO n ;       return 0;     }     if (n == 2 && m == 2) {       cout <<  NO n ;       return 0;     }     if (n == 2 && m == 3) {       cout <<  NO n ;       return 0;     }     if (n == 3 && m == 3) {       cout <<  YES n6 1 8 n7 5 3 n2 9 4 n ;       return 0;     }     if (n == 1 && m >= 4) {       if (swapd == false) {         cout <<  YES n ;         for (long long i = 2; i <= m; i += 2) cout << i <<    ;         for (long long i = 1; i <= m; i += 2) cout << i <<    ;       } else {         cout <<  YES n ;         for (long long i = 2; i <= m; i += 2) cout << i <<   n ;         for (long long i = 1; i <= m; i += 2) cout << i <<   n ;       }       return 0;     }     cout <<  YES n ;     a.resize(n);     if (swapd) {       for (long long i = 0; i < n; i++) {         a[i].resize(m);         for (long long j = 0; j < m; j++) a[i][j] = orig[j][i];       }     } else {       for (long long i = 0; i < n; i++) {         a[i].resize(m);         for (long long j = 0; j < m; j++) {           a[i][j] = i * m + j + 1;         }       }     }     b.resize(n);     for (long long i = 0; i < n; i++) {       b[i].resize(m);       if (i % 2 == 1) {         b[i] = a[i];         continue;       }       for (long long j = 0; j < m; j++) {         b[i][j] = a[i][((j - 2) % m + m) % m];       }     }     a = b;     for (long long j = 0; j < m; j++) {       if (j % 2 == 0) {         for (long long i = 0; i < n; i++) {           b[i][j] = a[(i + 1) % n][j];         }       }     }     if (swapd) {       for (long long j = 0; j < m; j++) {         for (long long i = 0; i < n; i++) cout << b[i][j] <<    ;         cout <<   n ;       }     } else {       for (long long i = 0; i < n; i++) {         for (long long j = 0; j < m; j++) {           cout << b[i][j] <<    ;         }         cout <<   n ;       }     }     return 0;   }   