#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  int n, m;
  cin >> n >> m;
  if (n > 4) {
    cout << "YES\n";
    vector<int> z[100005] = {}, y[100005] = {};
    for (int i = 0; i < n; i++) z[i].resize(m), y[i].resize(m);
    for (int i = 0; i < n; i++)
      for (int j = 0; j < m; j++) z[i][j] = i * m + j + 1;
    for (int i = 0; i < m; i++) {
      int c = 0;
      for (int j = (i & 1); j < n; j++, j++) y[c++][i] = z[j][i];
      for (int j = !(i & 1); j < n; j++, j++) y[c++][i] = z[j][i];
    }
    for (int i = 0; i < n; i++)
      for (int j = 0; j < m; j++) cout << y[i][j] << " \n"[j == m - 1];
  } else if (m > 4) {
    cout << "YES\n";
    for (int i = 0; i < n; i++) {
      for (int j = m * i + 1 + (i & 1); j <= m * i + m; j++, j++)
        cout << j << ' ';
      for (int j = m * i + 1 + !(i & 1); j <= m * i + m; j++, j++)
        cout << j << ' ';
      cout << '\n';
    }
  } else {
    bool z[4][4] = {{1, 0, 0, 1}, {0, 0, 0, 1}, {0, 0, 1, 1}, {1, 1, 1, 1}};
    n--, m--;
    if (z[n][m])
      cout << "YES\n";
    else {
      cout << "NO\n";
      return 0;
    }
    if (n == 0) {
      if (m == 0)
        cout << "1";
      else
        cout << "3 1 4 2";
    } else if (m == 0)
      cout << "3\n1\n4\n2";
    else if (n == 1)
      cout << "5 4 7 2\n3 6 1 8";
    else if (m == 1)
      cout << "5 4\n1 8\n7 2\n3 6";
    else if (n == 2 && m == 2)
      cout << "5 1 7\n3 9 2\n8 4 6";
    else if (n == 3 && m == 2)
      cout << "3 1 4 2\n6 8 5 7\n11 9 12 10";
    else if (m == 3 && n == 2)
      cout << "7 5 9\n1 11 3\n10 2 12\n4 8 6";
    else
      cout << "3 1 4 2\n6 8 5 7\n11 9 12 10\n14 16 13 15";
  }
}
