#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> a[100005], b[100005], all;
void solve() {
  for (int i = 1; i <= n; i++) {
    a[i].resize(m + 1);
    b[i].resize(m + 1);
    for (int j = 1; j <= m; j++) a[i][j] = (i - 1) * m + j;
  }
  bool bswap = 0;
  if (n > m) bswap = 1;
  if (bswap == 1) {
    for (int j = 1; j <= m; j++)
      for (int i = 1; i <= n; i++) all.push_back(a[i][j]);
    for (int j = 1; j <= m; j++) {
      if (n % 2 == 0) {
        for (int i = 1; i <= n / 2; i++)
          b[i][j] = all[(j - 1) * n + (i - 1) * 2 + 1];
        for (int i = n / 2 + 1; i <= n; i++)
          b[i][j] = all[(j - 1) * n + (i - 1 - n / 2) * 2];
        if (j % 2 == 1)
          for (int i = 1; i <= n / 2; i++) swap(b[i][j], b[n - i + 1][j]);
      } else {
        if (j % 2 == 1) {
          for (int i = 1; i <= n / 2; i++)
            b[i][j] = all[(j - 1) * n + (i - 1) * 2 + 1];
          for (int i = n / 2 + 1; i <= n; i++)
            b[i][j] = all[(j - 1) * n + (i - 1 - n / 2) * 2];
        } else {
          for (int i = 1; i <= n / 2 + 1; i++)
            b[i][j] = all[(j - 1) * n + (i - 1) * 2];
          for (int i = n / 2 + 2; i <= n; i++)
            b[i][j] = all[(j - 1) * n + (i - 2 - n / 2) * 2 + 1];
        }
      }
    }
  } else {
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= m; j++) all.push_back(a[i][j]);
    for (int i = 1; i <= n; i++) {
      if (m % 2 == 0) {
        for (int j = 1; j <= m / 2; j++)
          b[i][j] = all[(i - 1) * m + (j - 1) * 2 + 1];
        for (int j = m / 2 + 1; j <= m; j++)
          b[i][j] = all[(i - 1) * m + (j - 1 - m / 2) * 2];
        if (i % 2 == 1)
          for (int j = 1; j <= m / 2; j++) swap(b[i][j], b[i][m - j + 1]);
      } else {
        if (i % 2 == 1) {
          for (int j = 1; j <= m / 2; j++)
            b[i][j] = all[(i - 1) * m + (j - 1) * 2 + 1];
          for (int j = m / 2 + 1; j <= m; j++)
            b[i][j] = all[(i - 1) * m + (j - 1 - m / 2) * 2];
        } else {
          for (int j = 1; j <= m / 2 + 1; j++)
            b[i][j] = all[(i - 1) * m + (j - 1) * 2];
          for (int j = m / 2 + 2; j <= m; j++)
            b[i][j] = all[(i - 1) * m + (j - 2 - m / 2) * 2 + 1];
        }
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) cout << b[i][j] << " ";
    cout << endl;
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  if (n == 1 && m == 1) {
    cout << "YES" << endl << 1;
    return 0;
  }
  if ((n == 1 && m == 4) || (n == 4 && m == 1)) {
    cout << "YES" << endl;
    solve();
    return 0;
  }
  if (n + m <= 5) {
    cout << "NO";
    return 0;
  }
  cout << "YES" << endl;
  if (n == 3 && m == 3) {
    cout << 6 << " " << 1 << " " << 8 << endl;
    cout << 7 << " " << 5 << " " << 3 << endl;
    cout << 2 << " " << 9 << " " << 4;
    return 0;
  }
  if (n > 3 || m > 3) solve();
}
