#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;
}
