#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m;
  cin >> n >> m;
  if (n <= 3 && m <= 3) {
    if (n == 1 && m == 1) {
      cout << "YES\n1" << endl;
      return 0;
    } else if (n == 3 && m == 3) {
      cout << "YES" << endl;
      puts("1 5 9\n6 7 2\n8 3 4");
      return 0;
    }
    cout << "NO" << endl;
  }
  if (n > 3 || m > 3) {
    cout << "YES" << endl;
    if (max(n, m) == 4) {
      if (n > m) {
        if (m == 1) {
          puts("2\n4\n1\n3");
        }
        if (m == 2) {
          puts("3 2\n7 6\n4 1\n5 8");
        }
        if (m == 3) {
          puts("4 2 6\n10 8 12\n5 1 3\n7 11 9");
        }
      } else {
        if (n == 1) {
          puts("2 4 1 3");
        }
        if (n == 2) {
          puts("2 4 6 3\n5 7 1 8");
        }
        if (n == 3) {
          puts("2 4 6 3\n5 7 1 8\n10 12 9 11");
        }
        if (n == 4) {
          puts("2 4 6 3\n5 7 1 8\n10 12 13 11\n14 16 9 15");
        }
      }
    } else if (n > m) {
      vector<vector<int> > ans;
      for (int i = 1; i <= m; i++) {
        vector<int> vol;
        for (int j = 1; j <= n; j += 2) vol.push_back((j - 1) * m + i);
        for (int j = 2; j <= n; j += 2) vol.push_back((j - 1) * m + i);
        ans.push_back(vol);
      }
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) cout << ans[j][(i + j) % n] << ' ';
        cout << endl;
      }
    } else {
      vector<int> ans;
      for (int i = 1; i <= n; i++) {
        ans.clear();
        for (int j = 1; j <= m; j += 2) ans.push_back((i - 1) * m + j);
        for (int j = 2; j <= m; j += 2) ans.push_back((i - 1) * m + j);
        for (int j = m - i + 1; j < m; j++) cout << ans[j] << ' ';
        for (int j = 0; j < m - i + 1; j++) cout << ans[j] << ' ';
        cout << endl;
      }
    }
  }
  return 0;
}
