#include <bits/stdc++.h>
using namespace std;
void chmax(long long& a, long long b) { a = max(a, b); }
void chmin(long long& a, long long b) { a = min(a, b); }
class DSeatingOfStudents {
 public:
  int N, M;
  void input(std::istream& in, std::ostream& out) {
    ios_base::sync_with_stdio(false);
    in >> N >> M;
  }
  void solve(std::istream& in, std::ostream& out) {
    input(in, out);
    if (N == 1 and M == 1) {
      out << "YES\n";
      out << "1\n";
      return;
    }
    if (N == 3 and M == 3) {
      out << "YES\n";
      out << "6 1 8\n7 5 3\n2 9 4\n";
      return;
    }
    vector<vector<int>> ans(N, vector<int>(M, 0));
    for (int(i) = (0); (i) < (N); ++(i))
      for (int(j) = (0); (j) < (M); ++(j)) ans[i][j] = i * M + j + 1;
    bool swapped = false;
    if (N > M) {
      swap(N, M), swapped = true;
      vector<vector<int>> tmp(N, vector<int>(M, 0));
      for (int(i) = (0); (i) < (N); ++(i))
        for (int(j) = (0); (j) < (M); ++(j)) tmp[i][j] = ans[j][i];
      swap(ans, tmp);
    }
    if (M <= 3) {
      out << "NO\n";
      return;
    }
    out << "YES\n";
    if (N == 1) {
      if (M == 4) {
        if (swapped)
          out << "2\n4\n1\n3\n";
        else
          out << "2 4 1 3\n";
      } else {
        for (int i = 0; i < M; i += 2)
          out << ans[0][i] << (swapped ? '\n' : ' ');
        for (int i = 1; i < M; i += 2)
          out << ans[0][i] << (swapped ? '\n' : ' ');
        out << "\n";
      }
      return;
    }
    for (int i = 0; i < N; i += 2) {
      vector<int> tmp(M, 0);
      for (int(j) = (0); (j) < (M); ++(j)) tmp[(j + 2) % M] = ans[i][j];
      swap(tmp, ans[i]);
    }
    for (int i = 0; i < M; i += 2) {
      vector<int> tmp(N, 0);
      for (int(j) = (0); (j) < (N); ++(j)) tmp[j] = ans[(j + 1) % N][i];
      for (int(j) = (0); (j) < (N); ++(j)) ans[j][i] = tmp[j];
    }
    if (swapped) {
      for (int(i) = (0); (i) < (M); ++(i)) {
        for (int(j) = (0); (j) < (N); ++(j)) out << ans[j][i] << ' ';
        out << '\n';
      }
    } else {
      for (int(i) = (0); (i) < (N); ++(i)) {
        for (int(j) = (0); (j) < (M); ++(j)) out << ans[i][j] << ' ';
        out << '\n';
      }
    }
  }
};
int main() {
  DSeatingOfStudents solver;
  std::istream& in(std::cin);
  std::ostream& out(std::cout);
  solver.solve(in, out);
  return 0;
}
