#include <bits/stdc++.h>
using namespace std;
void run_case() {
  long long n, m;
  cin >> n >> m;
  bool swapped = false;
  if (n > m) {
    swap(n, m);
    swapped = true;
  }
  vector<vector<long long>> a(n, vector<long long>(m));
  if ((n == 1 || n == 2) && (m == 2 || m == 3)) {
    cout << "NO\n";
    return;
  }
  if (n == 3 && m == 3) {
    a = {{0, 4, 8}, {5, 6, 1}, {7, 2, 3}};
  } else if (m >= 3) {
    for (long long i = 0; i < n; i++) {
      if (i % 2 == 0) {
        long long x = 1;
        for (long long j = 0; j < m; j++) {
          a[i][x] = i * m + j;
          x += 2;
          if (x >= m) x = 0;
        }
      } else {
        if (m % 2 == 0) {
          long long x = m - 2;
          for (long long j = 0; j < m; j++) {
            a[i][x] = i * m + j;
            x -= 2;
            if (x < 0) x = m - 1;
          }
        } else {
          long long x = 0;
          for (long long j = 0; j < m; j++) {
            a[i][x] = i * m + j;
            x += 2;
            if (x >= m) x = 1;
          }
        }
      }
    }
  }
  if (swapped) {
    vector<vector<long long>> b(m, vector<long long>(n));
    vector<long long> to(n * m);
    for (long long i = 0; i < n; i++) {
      for (long long j = 0; j < m; j++) to[i * m + j] = j * n + i;
    }
    for (long long i = 0; i < n; i++) {
      for (long long j = 0; j < m; j++) b[j][i] = to[a[i][j]];
    }
    a = b;
    swap(n, m);
  }
  cout << "YES" << endl;
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j < m; j++) cout << a[i][j] + 1 << ' ';
    cout << '\n';
  }
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long T = 1;
  while (T--) {
    run_case();
  }
  return 0;
}
