#include <bits/stdc++.h>
using namespace std;
const int SZ = 1000010, INF = 0x7FFFFFFF;
const double EPS = 1e-9;
int arr[SZ];
int n, m;
void init() {
  for (int i = 0; i < n * m; ++i) arr[i] = i + 1;
}
bool chk(int row, int col, int val) {
  if (row != 0 && arr[(row - 1) * m + col] == val) return 1;
  if (col != 0 && arr[row * m + col - 1] == val) return 1;
  if (row != (m - 1) && arr[row * m + col + 1] == val) return 1;
  if (row != (n - 1) && arr[(row + 1) * m + col] == val) return 1;
  return 0;
}
bool work() {
  clock_t bg = clock();
  for (;;) {
    clock_t end = clock();
    if (end - bg > 1000) break;
    init();
    random_shuffle(arr, arr + n * m);
    int ok = 1;
    for (int i = 0; i < n * m; ++i) {
      int row = i / m;
      int col = i % m;
      if (chk(row, col, arr[i] - m)) {
        ok = 0;
        break;
      }
      if (chk(row, col, arr[i] - 1)) {
        ok = 0;
        break;
      }
      if (chk(row, col, arr[i] + 1)) {
        ok = 0;
        break;
      }
      if (chk(row, col, arr[i] + m)) {
        ok = 0;
        break;
      }
    }
    if (ok) return 1;
  }
  return 0;
}
void show() {
  for (int i = 0; i < n * m; ++i) {
    cout << arr[i];
    if (i % m == m - 1)
      cout << endl;
    else
      cout << " ";
  }
}
void shift() {
  for (int i = 1; i < n; i += 2) {
    int a = arr[i * m], b = arr[i * m + 1];
    for (int j = m - 1; j > 1; --j) {
      arr[i * m + (j + 2) % m] = arr[i * m + j];
    }
    arr[i * m + 2] = a, arr[i * m + 3] = b;
  }
  for (int j = 1; j < m; j += 2) {
    int a = arr[j];
    for (int i = 1; i < n; ++i) {
      arr[(i - 1) * m + j] = arr[i * m + j];
    }
    arr[(n - 1) * m + j] = a;
  }
}
void shift2() {
  for (int i = 1; i < n; i += 2) {
    int a = arr[i * m];
    for (int j = m - 1; j > 0; --j) {
      arr[i * m + (j + 1) % m] = arr[i * m + j];
    }
    arr[i * m + 1] = a;
  }
  for (int j = 1; j < m; j += 2) {
    int a = arr[j], b = arr[1 * m + j];
    for (int i = n - 1; i > 1; --i) {
      arr[((i + 2) % n) * m + j] = arr[i * m + j];
    }
    arr[2 * m + j] = a, arr[3 * m + j] = b;
  }
}
int main() {
  std::ios::sync_with_stdio(0);
  cin >> n >> m;
  if (n >= 2 && m >= 4) {
    cout << "YES" << endl;
    init();
    shift();
    show();
  } else if (n >= 4 && m >= 2) {
    cout << "YES" << endl;
    init();
    shift2();
    show();
  } else {
    if (work()) {
      cout << "YES" << endl;
      show();
    } else {
      cout << "NO" << endl;
    }
  }
  return 0;
}
